VueRouter导航守卫用法详解


Posted in Javascript onDecember 25, 2017

简介

主要用来通过跳转或取消的方式守卫导航。

例如判断登录信息:没登录全部跳到登录页。判断必要操作是否进行没进行的话中断跳转。

分为三大类:全局守卫、路由守卫、组件守卫

全局守卫

beforeEach
beforeResolve
afterEach

路由守卫

beforeEnter

组件守卫

beforeRouteEnter
  // 在渲染该组件的对应路由被 confirm 前调用
  // 不!能!获取组件实例 `this`
  // 因为当守卫执行前,组件实例还没被创建
  虽然无法直接获取组件实力
  但是我们可以通过next参数的回调函数获取到当前实例进行操作
  beforeRouteEnter: (to, from, next) => {
    next((vm) => {
      //vm就是当前组件实例
    });
  }
beforeRouteUpdate
  // 在当前路由改变,但是该组件被复用时调用
  // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
  // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
  // 可以访问组件实例 `this`
beforeRouteLeave
  // 导航离开该组件的对应路由时调用
  // 可以访问组件实例 `this`

参数介绍

这些导航守卫涉及到的参数:to、from、next

除了全局守卫的afterEach只有to和from外其余都有三个参数

(摘抄自官网)
to: Route: 即将要进入的目标 路由对象
from: Route: 当前导航正要离开的路由
next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。
  next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。
  next(false): 中断当前的导航。如果浏览器的 URL 改变了(可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。
  next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。
  next(error): (2.4.0+) 如果传入 next 的参数是一个 Error 实例,则导航会被终止且该错误会被传递给 router.onError() 注册过的回调。

运行机制

VueRouter导航守卫用法详解

以上就是本次给大家介绍的关于VueRouter导航守卫的全部知识,希望我们整理的内容对你有用,感谢你对三水点靠木的支持。

Javascript 相关文章推荐
JQuery UI DatePicker中z-index默认为1的解决办法
Sep 28 Javascript
基于jquery的获取浏览器窗口大小的代码
Mar 28 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
Jun 13 Javascript
浅谈JavaScript 的执行顺序
Aug 07 Javascript
基于Bootstrap3表格插件和分页插件实例详解
May 17 Javascript
使用Promise链式调用解决多个异步回调的问题
Jan 15 Javascript
js面向对象编程总结
Feb 16 Javascript
JS实现移动端整屏滑动的实例代码
Nov 10 Javascript
vue通过路由实现页面刷新的方法
Jan 25 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
Dec 24 Javascript
JS监听组合按键思路及实现过程
Apr 17 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
Jul 17 Javascript
基于zTree树形菜单的使用实例
Dec 25 #Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
Dec 25 #jQuery
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
Dec 25 #Javascript
详解vue-cli之webpack3构建全面提速优化
Dec 25 #Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
Dec 25 #jQuery
zTree树形菜单交互选项卡效果的实现方法
Dec 25 #Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
Dec 25 #jQuery
You might like
PHP中改变图片的尺寸大小的代码
2011/07/17 PHP
解析PHP的session过期设置
2013/06/29 PHP
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
jQuery同步提交示例代码
2015/12/12 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
使用python实现rsa算法代码
2016/02/17 Python
python实现年会抽奖程序
2019/01/22 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
物流管理专业应届生求职信
2013/11/21 职场文书
精彩的英文自荐信
2014/01/30 职场文书
经销商订货会主持词
2014/03/27 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
2014年内勤工作总结
2014/11/24 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
2016公司年会通知范文
2015/04/25 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB