在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 相关文章推荐
js 获取浏览器高度和宽度值(多浏览器)
Sep 02 Javascript
javascript iframe编程相关代码
Dec 28 Javascript
JavaScript中的undefined学习总结
Nov 30 Javascript
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 Javascript
jquery实现简单的表单验证
Nov 17 Javascript
js实现精确到毫秒的倒计时效果
Aug 05 Javascript
Bootstrap栅格系统的使用和理解2
Dec 14 Javascript
Javascript前端经典的面试题及答案
Mar 14 Javascript
vue-cli中的webpack配置详解
Sep 25 Javascript
使用Angular CLI从蓝本生成代码详解
Mar 24 Javascript
如何在微信小程序中使用骨架屏的步骤
Jun 12 Javascript
JS原生实现轮播图的几种方法
Mar 23 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网页标题中文乱码的有效解决方法
2014/03/05 PHP
PHP的反射机制实例详解
2017/03/29 PHP
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
Vue中计算属性computed的示例解读
2017/07/26 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
浅谈JavaScript 声明提升
2020/09/14 Javascript
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
Go/Python/Erlang编程语言对比分析及示例代码
2018/04/23 Python
Python查看微信撤回消息代码
2018/06/07 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
django自带调试服务器的使用详解
2019/08/29 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
Python time库基本使用方法分析
2019/12/13 Python
pytorch 求网络模型参数实例
2019/12/30 Python
如何在sublime编辑器中安装python
2020/05/20 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
制定岗位职责的原则
2013/11/08 职场文书
财务经理岗位职责
2013/11/09 职场文书
一年级小学生评语
2014/04/22 职场文书
职务说明书范文
2014/05/07 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
加薪通知
2015/04/25 职场文书
毕业证明模板
2015/06/19 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python