1.什么是Vue路由导航守卫?

官网:https://router.vuejs.org/zh/guide/advanced/navigation-guards.html

正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。这里有很多方式植入路由导航中:全局的,单个路由独享的,或者组件级的。

导航守卫分为全局守卫,其中包括全局前置守卫,全局后置守卫,全局解析守卫,还有独享守卫,组件守卫等等

如果说拦截器是兢兢业业端着茶缸,登记每一个进出小区的门卫大爷,那么我愿称导航守卫为一群训练有素的的巡逻保安,

接下来谈下常用的两种守卫

1.全局前置守卫beforeEach

路由跳转之前, 会触发一个函数(全局前置守卫)

应用场景:权限控制───由全局前置守卫来决定是否放行

基本的语法

const router = createRouter({ ... })
router.beforeEach((to, from) => {// ...// 返回 false 以取消导航return false
})

全局前置守卫里面有三个参数,其含义分别是

  • to: 向那个路径而去
  • from: 从那个路径而来
  • next: 函数, 是否放行
  • next(false) //不放行
  • next() //放行
    //例如:强制跳转到 /find页面
  • next(‘/find’)

注意:需要跳转时一定要调next(), 才会跳转下一页
具体用法示例:

const islogin = false    //注册全局守卫
router.beforeEach((to, from, next) => {if (!islogin && to.path === '/my') {alert('请先登录后跳转!')return next(false)// return next('/find')  //未登录强制跳转某页面}next()//放行
})

2.全局后置守卫afterEach

全局后置守卫不会改变导航本身,只是再跳转之后做判断

应用场景:跳转后的页面进行例如滚动条回调0 0 位置、更新页面title、懒加载结束等

基本的语法

router.afterEach((to, from) => {// ...
})

注意:afterEach不接收第三个参数 next 函数
具体场景示例:

//后置导航守卫
router.afterEach(() => {//进度条结束NProgress.done()
})

巡逻保安───导航守卫相关推荐

  1. 路由的导航守卫过渡动效transtion导航守卫 路由懒加载 路由元信息 @stage3---wee2--day7

    # 路由的导航守卫 别名: 导航守卫 路由守卫 路由钩子 路由拦截 作用: - 类似 [保安] 守卫路由 进 举例: 携带数据进 出 举例: 事情完成才能出 导航守卫一共有三种形式 [ 项目三选一 ] ...

  2. Vue路由守卫(导航守卫)及使用场景

    目录 前言 一.路由守卫是什么? 二.路由守卫全解析 先来看一下钩子函数执行后输出的顺序吧 1.全局路由守卫 2.组件路由守卫 3.路由独享守卫 单独介绍一下路由守卫钩子三个参数 前言 最近在学习vu ...

  3. 导航守卫又称为路由守卫

    路由进阶部分 – 导航守卫( 路由守卫 ) 作用: - 类似 [保安] 守卫路由 进 举例: 携带数据进 出 举例: 事情完成才能出 导航守卫一共有三种形式 全局导航守卫用的时候写在主文件中(main ...

  4. 导航守卫(也叫路由守卫)

    导航守卫(也叫路由守卫) 作用: - 类似 [保安] 守卫路由 进 举例: 携带数据进 出 举例: 事情完成才能出 导航守卫一共有三种形式 - A: 全局导航守卫 . 全局前置守卫 router.be ...

  5. 【vue-router②】使用导航守卫控制页面前进刷新,后退缓存

    之前给大家分享了利用keep-alive进行缓存你想要的页面,然后到后面会出现这样的问题: 我有三个组件A(组件).B(A中的弹框).C(组件),其实算是两个组件,一个弹框,现在他们的关系是这样的: ...

  6. Vue-router进阶:导航守卫

    全局前置守卫 使用router.beforeEach注册一个全局前置守卫. const router = new VueRouter({...}) router.beforeEach((to,from ...

  7. vue 按需加载,换存,导航守卫

    开发中的注意事项:代码性能的优化 1. 减少对第三方的依赖,降低耦合度 2. 加强组件的重复利用率 3. 按需加载 4. 缓存 (尽量发送请求后保存数据) 5. 开发过程中,尽量有着面向对象的思想,这 ...

  8. 解决导航守卫router.beforeResolve使用不了this.$store

    在vue router的导航守卫如beforeEach()中是无法直接通过this.$store去操作vuex的,因为这里的this指向不一致. 正确写法 import store from '../ ...

  9. vue中的组件导航守卫,个人理解

    vue中组件导航守卫 beforeRouteEnter beforeRouteUpdate (2.2 新增) beforeRouteLeave 今天有遇到一个问题,就是在一个页面 新增模块按钮 和 编 ...

最新文章

  1. 郑州大学软件学院 大学生创新创业选拔赛章程
  2. C# 中利用 Conditional 定义条件方法
  3. Java语言程序设计基础篇 循环(四)练习
  4. 移位溢注:告别依靠人品的偏移注入
  5. 客户流失预警模型怎么做?
  6. 全局变量的使用和声明
  7. Mate30安装谷歌全家桶(20200215,成功)
  8. 抖音怎么去除水印方法及小工具
  9. linux下借助有道在线词典查词
  10. vue+antDesign实现树形数据展示并表格父子级选中和取消联动
  11. 3分钟阿里云商标智能注册申请及申请流程图文详解
  12. 随笔-不足与外人道也
  13. Buy and Resell HDU - 6438 贪心
  14. NAT模式、路由模式、桥接模式 区别对比
  15. c语言中 指针的研究,C语言中指针的研究与总结
  16. JZ38 字符串的排列
  17. git-使用staf暂存分支
  18. 针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引。
  19. 5-14 电话聊天狂人 (25分)
  20. discuz的htm模板代码分析

热门文章

  1. ionic button 一些使用心得
  2. 异步action,redux-thunk在hooks中的应用
  3. 【力扣每日一题】二叉树的最小深度
  4. 彩色图像类毕业论文文献有哪些?
  5. 通信售前工程师的总结
  6. C++中__int64用法
  7. 科技哲学学期要点归纳
  8. python可以做哪些有趣的事作文_一件有趣的事作文300字(精选8篇)
  9. [MATLAB学习tip3]geotiff(tif/tiff)文件读取、使用与保存
  10. 吴军博士人生进阶三部曲:《见识》