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 相关文章推荐
javascript jQuery插件练习
Dec 24 Javascript
extjs 列表框(multiselect)的动态添加列表项的方法
Jul 31 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
Oct 30 Javascript
用JavaScript实现页面重定向功能的教程
Jun 04 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
Aug 02 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
Jun 05 Javascript
不得不知的ES6小技巧
Jul 28 Javascript
详解小程序设置缓存并且不覆盖原有数据
Apr 15 Javascript
VUE前后端学习tab写法实例
Aug 06 Javascript
node.js域名解析实现方法详解
Nov 05 Javascript
vue.js实现照片放大功能
Jun 23 Javascript
JavaScript中window和document用法详解
Jul 28 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中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
PHP中如何使用Redis接管文件存储Session详解
2018/11/28 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法
2016/01/19 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
Python Switch Case三种实现方法代码实例
2020/06/18 Python
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
CSS3 文字动画效果
2020/11/12 HTML / CSS
社区安全检查制度
2014/02/03 职场文书
公司活动方案范文
2014/03/06 职场文书
期末评语大全
2014/05/04 职场文书
法学院毕业生求职信
2014/06/25 职场文书
党建目标管理责任书
2014/07/25 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
公司门卫岗位职责
2015/04/13 职场文书
就业推荐表院系意见
2015/06/05 职场文书
党员证明模板
2015/06/19 职场文书
工商局调档介绍信
2015/10/22 职场文书
python代码实现扫码关注公众号登录的实战
2021/11/01 Python
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python