在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 相关文章推荐
十个优秀的Ajax/Javascript实例网站收集
Mar 31 Javascript
jquery select下拉框操作的一些说明
Apr 02 Javascript
JavaScript对象链式操作代码(jquery)
Jul 04 Javascript
JavaScript高级程序设计 DOM学习笔记
Sep 10 Javascript
js的正则test,match,exec详细解析
Jan 29 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
Mar 13 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
Oct 04 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
Nov 04 Javascript
vue-cli的eslint相关用法
Sep 29 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
Aug 28 Javascript
解决vue 绑定对象内点击事件失效问题
Sep 05 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
Jul 15 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
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
PHP中session变量的销毁
2014/02/27 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
php文件系统处理方法小结
2016/05/23 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
jsvascript图像处理—(计算机视觉应用)图像金字塔
2013/01/15 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[03:58]2014DOTA2国际邀请赛 龙宝赛后解密DK获胜之道
2014/07/14 DOTA
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
基于pip install django失败时的解决方法
2018/06/12 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
金牌葡萄酒俱乐部:Gold Medal Wine Club
2017/11/02 全球购物
村长反四风问题个人对照检查材料
2014/09/21 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python
使用CSS连接数据库的方式
2022/02/28 HTML / CSS
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript