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 02 Javascript
基于jquery的button默认enter事件(回车事件)。
May 18 Javascript
Array.prototype.concat不是通用方法反驳[译]
Sep 20 Javascript
JavaScript实现数字数组正序排列的方法
Apr 06 Javascript
易被忽视的js事件问题总结
May 14 Javascript
vue生成token并保存到本地存储中
Jul 17 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
Dec 05 Javascript
jQuery实现的中英文切换功能示例
Jan 11 jQuery
vue+element 模态框表格形式的可编辑表单实现
Jun 07 Javascript
vue 实现强制类型转换 数字类型转为字符串
Nov 07 Javascript
vue 使用 canvas 实现手写电子签名
Mar 06 Javascript
Postman参数化实现过程及原理解析
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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
php计算数组不为空元素个数的方法
2014/01/27 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
ajax实现动态下拉框示例
2017/01/10 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
会话Bean的种类
2013/11/07 面试题
高中生的自我评价
2014/03/04 职场文书
纪律委员竞选稿
2015/11/19 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android