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操作对象数组元素方法详解
Nov 26 Javascript
JavaScript汉诺塔问题解决方法
Apr 21 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
May 09 Javascript
简单谈谈Vue 模板各类数据绑定
Sep 25 Javascript
zTree实现节点修改的实时刷新功能
Mar 20 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
Mar 15 Javascript
vue 1.0 结合animate.css定义动画效果
Jul 11 Javascript
vue侧边栏动态生成下级菜单的方法
Sep 07 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
Nov 15 Javascript
jQuery实现全选、反选和不选功能的方法详解
Dec 04 jQuery
JS实现transform实现扇子效果
Jan 17 Javascript
JS实现简易留言板(节点操作)
Mar 16 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对mongodb的扩展(初出茅庐)
2012/11/11 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
Javascript 复制数组实现代码
2009/11/26 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
探究python中open函数的使用
2016/03/01 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
2019/04/29 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
优质服务演讲稿
2014/05/14 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
2014年工会工作总结
2014/11/12 职场文书
地陪导游欢迎词
2015/01/26 职场文书
JavaScript 对象创建的3种方法
2021/11/17 Javascript