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 相关文章推荐
js 如何实现对数据库的增删改查
Nov 23 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
Dec 27 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
Jun 04 Javascript
JavaScript中window、doucment、body的解释
Aug 14 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
Dec 13 Javascript
函数四种调用模式以及其中的this指向
Jan 16 Javascript
AngularJS Select(选择框)使用详解
Jan 18 Javascript
ES6新特性之模块Module用法详解
Apr 01 Javascript
AngularJs+Bootstrap实现漂亮的计算器
Aug 10 Javascript
vue中引入第三方字体文件的方法示例
Dec 17 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
Aug 02 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
Mar 07 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
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
PHP mb_convert_encoding 获取字符串编码类型实现代码
2009/04/26 PHP
php中存储用户ID和密码到mysql数据库的方法
2013/02/06 PHP
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
浅析node.js中close事件
2014/11/26 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
js实现拖拽功能
2017/03/01 Javascript
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
跟老齐学Python之复习if语句
2014/10/02 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
python ---lambda匿名函数介绍
2019/03/13 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
大门门卫岗位职责
2013/11/30 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
停车场管理制度范本
2015/08/05 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书
golang import自定义包方式
2021/04/29 Golang
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android
Vue的生命周期一起来看看
2022/02/24 Vue.js
Redis实现订单过期删除的方法步骤
2022/06/05 Redis