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延迟加载
Mar 09 Javascript
checkbox 复选框不能为空
Jul 11 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
Sep 04 Javascript
jquery判断元素是否隐藏的多种方法
May 06 Javascript
如何用JavaScript定义一个类
Sep 12 Javascript
详解javascript事件冒泡
Jan 09 Javascript
利用Angularjs中模块ui-route管理状态的方法
Dec 27 Javascript
基于jQuery的左滑出现删除按钮的示例
Aug 29 jQuery
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
Sep 27 Javascript
js变量值传到php过程详解 将php解析成数据
Jun 26 Javascript
node使用async_hooks模块进行请求追踪
Jan 28 Javascript
使用vuex-persistedstate本地存储vuex
Apr 29 Vue.js
基于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输出XML到页面的3种方法详解
2013/06/06 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
修复IE9&safari 的sort方法
2011/10/21 Javascript
javaScript(JS)替换节点实现思路介绍
2013/04/17 Javascript
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
vue.js组件之间传递数据的方法
2017/07/10 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
Python3处理HTTP请求的实例
2018/05/10 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
在django admin中添加自定义视图的例子
2019/07/26 Python
pytest中文文档之编写断言
2019/09/12 Python
django中media媒体路径设置的步骤
2019/11/15 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
债务纠纷委托书
2014/08/30 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
作风建设整改方案
2014/10/27 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
酒会开场白大全
2015/06/01 职场文书
初中英语教师个人工作总结2015
2015/07/21 职场文书
HDFS免重启挂载新磁盘
2022/04/06 Servers