在vue中利用全局路由钩子给url统一添加公共参数的例子


Posted in Javascript onNovember 01, 2019

有的时候我们可能有这样的需求,比如现在url为m.taoyuewenhua.com/#/ 我们需要在用户每次跳转路由的时候监控有没有abc这个参数. 如果有,后端要求我们在以后跳转任何url的时候,都要在url携带上这个参数.就变成m.taoyuewenhua.com/#/&abc=xxx;

这个参数称为"公共参数";

那么,我们该如何做呢?因为vue中有很多组件.在每个组件都写的话,太麻烦.所以这个时候,全局路由钩子登场了.分别是

router.beforeEach 全局导航前置守卫 路由跳转前执行

router.beforeResolve 全局导航解析守卫 vue2.5新增 导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后, 解析守卫就被调用

router.afterEach 全局导航后置守卫 路由跳转后执行

我们此次用到的是前置守卫.开始我用的是后置守卫.因为出现bug,也可能是本人技术不精.后又改为前置守卫.

代码如下:

router.beforeEach((to, from, next) => {
 if (to.query.abc) {
  next();
  return;
 };
 if (from.query.abc) {
  let toQuery = JSON.parse(JSON.stringify(to.query));
  toQuery.abc = from.query.abc;
  next({
   path: to.path,
   query: toQuery
  })
 } else {
  next()
 }
 
 });

在这里解释一下: 前置守卫一定记得执行next方法.如果不执行,路由不会跳转.路由在跳转的时候,如果我们输出from和to.他们分别代表上一个路由和现在的路由.假如我们要从a调到b;也就是跳转的时候,我们马上获取b路由地址.并且判断此时b路由有没有abc这个参数.如果有就直接跳转过去,next方法执行.并且return;如果没有,然后如果a这个url有abc这个参数了,那么我们就把这个参数放到b的url上;并且next方法执行.携带上这个参数就行了. 最后,如果a没有这个参数 ,直接next方法执行.也就是说路由直接跳转过去,不做任何拦截。

还有一点需要提醒初学者.初学者刚用路由钩子容易遇到死循环.建议好好看一下路由钩子的执行机制.就不会遇到死循环了.有时间了说一下这个问题.

以上这篇在vue中利用全局路由钩子给url统一添加公共参数的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中使用Substring删除字符串最后一个字符
Nov 03 Javascript
使用JS CSS去除IE链接虚线框的三种方法
Nov 14 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
Nov 28 Javascript
百度地图API之本地搜索与范围搜索
Jul 30 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
Nov 30 Javascript
实例详解JavaScript获取链接参数的方法
Jan 01 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
Sep 24 Javascript
JavaScript 中 apply 、call 的详解
Mar 21 Javascript
Vue实现动态响应数据变化
Apr 28 Javascript
彻底理解js面向对象之继承
Feb 04 Javascript
JS常见构造模式实例对比分析
Aug 27 Javascript
JS面向对象实现飞机大战
Aug 26 Javascript
js实现旋转的星空效果
Nov 01 #Javascript
浅谈小程序globalData的那些事儿
Nov 01 #Javascript
小程序怎样让wx.navigateBack更好用的方法实现
Nov 01 #Javascript
vue实现配置全局访问路径头(axios)
Nov 01 #Javascript
vue.js路由mode配置之去掉url上默认的#方法
Nov 01 #Javascript
js实现漂亮的星空背景
Nov 01 #Javascript
Vue实现push数组并删除的例子
Nov 01 #Javascript
You might like
php中fgetcsv()函数用法实例
2014/11/28 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
2007/03/10 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
2015/03/26 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
JS如何设置元素样式的方法示例
2017/08/28 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
python字典快速保存于读取的方法
2018/03/23 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
对python 自定义协议的方法详解
2019/02/13 Python
使用Python的Turtle库绘制森林的实例
2019/12/18 Python
Python print不能立即打印的解决方式
2020/02/19 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
爱情检讨书大全
2014/01/21 职场文书
咖啡店创业计划书
2014/08/15 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
个人股份合作协议书
2014/10/24 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书
MySQL视图概念以及相关应用
2022/04/19 MySQL