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 处理网页内容的实现代码
Feb 15 Javascript
js中小数转换整数的方法
Jan 26 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
Aug 18 Javascript
javascript实现简单的分页特效
Aug 12 Javascript
js实现简单折叠、展开菜单的方法
Aug 28 Javascript
jQuery实现图片上传和裁剪插件Croppie
Nov 29 Javascript
Vue-resource实现ajax请求和跨域请求示例
Feb 23 Javascript
bootstrap table表格客户端分页实例
Aug 07 Javascript
浅谈redux, koa, express 中间件实现对比解析
May 23 Javascript
详解package.json版本号规则
Aug 01 Javascript
js最全的数组的降维5种办法(小结)
Apr 28 Javascript
VueX模块的具体使用(小白教程)
Jun 05 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函数之子字符串替换 str_replace
2011/03/23 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
无阻塞加载脚本分析[全]
2011/01/20 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
2016/06/23 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
JS实现标签滚动切换效果
2017/12/25 Javascript
微信小程序实现团购或秒杀批量倒计时
2020/11/01 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
python使用htmllib分析网页内容的方法
2015/05/08 Python
简介Python中用于处理字符串的center()方法
2015/05/18 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
Python排序算法实例代码
2017/08/10 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
python获取linux系统信息的三种方法
2020/10/14 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
Miller Harris官网:英国小众香水品牌
2020/09/24 全球购物
linux面试题参考答案(1)
2016/01/22 面试题
九州传奇上机题
2014/07/10 面试题
个人简历自我鉴定
2013/10/11 职场文书
总经理秘书工作职责
2013/12/26 职场文书
24岁生日感言
2014/01/13 职场文书
好习惯伴我成长演讲稿
2014/05/21 职场文书
中学教师个人总结
2015/02/10 职场文书
护士2015年终工作总结
2015/04/29 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
生日宴会祝酒词
2015/08/10 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
2016年教师师德师风承诺书
2016/03/25 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python
golang 在windows中设置环境变量的操作
2021/04/29 Golang
python中%格式表达式实例用法
2021/06/18 Python