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 相关文章推荐
网页中实现浏览器的最大,最小化和关闭按钮
Mar 12 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
Feb 06 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
Jan 26 Javascript
按钮接受回车事件的三种实现方法
Jun 06 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
Jul 29 Javascript
JS实现很酷的水波文字特效实例
Feb 26 Javascript
JavaScript判断是否为数字的4种方法及效率比较
Apr 01 Javascript
javascript实现去除HTML标签的方法
Dec 26 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
Sep 25 Javascript
实战node静态文件服务器的示例代码
Mar 08 Javascript
微信小程序url传参写变量的方法
Aug 09 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
Aug 13 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
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
php cache类代码(php数据缓存类)
2010/04/15 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
react-native 封装选择弹出框示例(试用ios&android)
2017/07/11 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
浅谈对Angular中的生命周期钩子的理解
2017/07/31 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
浅谈js中的bind
2019/03/18 Javascript
VUE.js实现动态设置输入框disabled属性
2019/10/28 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
python查询mysql中文乱码问题
2014/11/09 Python
用Python进行TCP网络编程的教程
2015/04/29 Python
python函数装饰器用法实例详解
2015/06/04 Python
python中比较两个列表的实例方法
2019/07/04 Python
python中字典按键或键值排序的实现代码
2019/08/27 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
python 连续不等式语法糖实例
2020/04/15 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
库房主管岗位职责
2013/12/31 职场文书
服务员岗位职责
2014/01/29 职场文书
大学军训感言1000字
2014/02/25 职场文书
《最后的姿势》教学反思
2014/02/27 职场文书
学历公证委托书
2014/04/09 职场文书
大学生工作求职信
2014/06/23 职场文书
护士节演讲稿开场白
2014/08/25 职场文书
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js