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

  1. 作用: — 类似 【保安】
  • 守卫路由

      • 举例: 携带数据进
      • 举例: 事情完成才能出
  1. 导航守卫一共有三种形式
- A: 全局导航守卫

. 全局前置守卫 router.beforeEach(fn)

  1. fn中有三个参数

    • to:表示要去哪里
    • from:表示从哪里来
    • next:表示通不通过
  • 关于next的使用

    • next() 等价于 next( true ) 表示可以从当前路由跳转到目标路由
    • next( false ) 表示不通过, 表示从当前路由跳转不到目标路由
    • next(’/login’) 等价于 next({path:’/login’}) 跳转指定的路由
    • next(’/login’) 等价于 next({path:’/login’,params,query})
    • next( fn ) 数据预载
全局前置守卫是写在入口文件 main.js 中的,在进入路由前执行

// 全局前置路由守卫
router.beforeEach( (to,from,next) =>{const name = localStorage.getItem('name');//查看本地存储上是否有name对象if( name || to.path === '/login'){//短路逻辑,有就可以继续执行,没有就跳转到登录页面next()}else{next( '/login' )//跳转登录页面}
})// 全局后置路由守卫 router.afterEach(fn),表示离开当前路由时执行
router.afterEach( (to,from,next)=> {if(to.path === '/user'){//当to的path值等于这个时alert('确定进入user吗')}
})
  1. 全局的解析守卫
  2. 在 2.5.0+ 你可以用 router.beforeResolve 注册一个全局守卫。这和 router.beforeEach 类似,区别是在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就被调用。
  3. 必须保证整个项目的守卫和异步路由组件解析完成

3. 全局的后置守卫 afterEach(fn)

  • 可以做一些用户友好提示

代码在上面

B: 路由独享守卫

  • 写在路由表中的守卫钩子
  • 针对的是和当前路由相关的,那么其他与之不相关的路由,它是无法监听它的变化情况的

{path: '/user',
component: User,
beforeEnter: ( to,from,next ) =>{// console.log(to)const name = localStorage.getItem('name');//判断本地存储有没有name对象if( name){//存在就可以继续执行next()}else{setTimeout(()=>{alert('你还没有登录,点击跳转登录')//不存在就弹窗告诉没有登录,点击登录next('/login')},0)}}
},

C: 组件内守卫

  • 有三种

    • beforeRouteEnther( (to,from,next) =>{} ) 进入组件时触发【 //注意写法,fore route 】
    • beforeRouteUpdate( (to,from,next) =>{} ) 数据改变时触发
    • beforeRouteLeave( (to,from,next) =>{} ) 离开组件时触发
  • 组件内的前置守卫 beforeRouteEnter((to,from,next)=>{})

    • 导航进入组件时,调用
    • this是访问不到的,如果非要访问this ,必须通过 next(vm=>{})访问
    • 因为组件此时没有创建,所以没有this
    • 案例: 数据预载(进入组件前就获得数据)
next(vm => { //vm指的就是组件const result = JSON.parse(res.data.slice(7,-1)).rp_result.categorysvm.$set(vm.category,'categorys',result)
})
组件内的后置守卫
  • 离开组件时,调用
  • this是可以访问到
//判断两个输入框是否有值输入,有就可以直接离开,没有弹窗告诉确定是否离开,防止误触
beforeRouteLeave(to,from,next){if(this.username && this.pwd){next()}else{if(confirm('你确定要离开吗')){//返回一个布尔值next()}else{next(false)}}
}
组件内的更新守卫( 路由传参和路由的接参 )
  • 在当前路由改变,但是该组件被复用时调用
  • 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
  • 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
  • 可以访问组件实例 this



导航守卫(也叫路由守卫)相关推荐

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

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

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

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

  3. vue 声明周期函数_vue-router路由守卫-上

    1. 为什么要使用路由守卫?什么是路由守卫? 第一次认识路由守卫:之前我做过的小项目里面,我们直接在浏览器网址的地方进行修改就能跳转页面,这是不安全的,因此就需要路由守卫,实现通过路由拦截,来判断用户 ...

  4. 路由守卫 /路由拦截

    1. 在访问一个页面的时候 也就是在进行路由跳转的时候,把这个跳转拦下来 做一些判断或者操作 然后来执行是继续访问这个页面还是执行别的操作 路由的导航守卫又叫 路由的生命周期函数 也叫 路由的钩子函数 ...

  5. Angular 路由守卫

    1. 路由 Angular路由: 可以控制页面跳转:可以在多视图间切换: 2. 路由守卫 Angular路由守卫: 在进入或离开某路由时,用于判断是否可以离开.进入某路由::: return true ...

  6. vue2路由手动创建二级路由路由传参路由守卫打包上线

    路由手动配置: #在@vue/cli创建的项目中,路由用法如下. 1.安装路由npm install vue-router@32:定义路由所需的组件(.vue文件)要实现页面about 和home两个 ...

  7. 路由守卫-最全没有之一(亲测)

    什么是路由守卫? 路由守卫就是路由跳转的一些验证,比如登录鉴权(没有登录不能进入个人中心页)等等等 路由守卫分为三大类: 1. 全局守卫:前置守卫:beforeEach 后置钩子:afterEach ...

  8. vue-cli 初始化创建 vue2.9.6 项目路由守卫、封装axios、vuex

    阅读目录 Vue如何封装Axios请求 1 安装axios 2 封装代码 axios 应用方式 Vue 中的路由守卫 使用演示 1 全局守卫 2 组件级守卫 3 单个路由独享的守卫 4 官网整个路由守 ...

  9. vue的三种路由守卫

    路由守卫就是当⻚⾯跳转的时候会触发的钩⼦函数, vue⼀共给我们提供了三种路由守卫 全局路由守卫 前置守卫: router.beforeEach((to,from,next) => {}) to ...

最新文章

  1. TCP 协议面试灵魂 12 问 | 强势整理
  2. Leetcode 100. 相同的树 解题思路及C++实现
  3. JVM 面试题 87 题详解
  4. SQL开发技巧 join从句
  5. Material Design 组件之 CollapsingToolbarLayout
  6. Python与C之间的相互调用(Python C API及Python ctypes库)
  7. api地理编码_通过地理编码API使您的数据更有意义
  8. LeetCode MySQL 1211. 查询结果的质量和占比
  9. 心电图图平板运动测试软件,心电图和平板运动可以检查出心
  10. linux centos 安装rar,CentOS6.8 安装rar解压缩
  11. bzoj 1179: [Apio2009]Atm(Trajan+SPFA)
  12. day01 python入门之路
  13. 【使用技巧】【图像编辑和处理】将GIF图缩放
  14. Spring Framework 常用工具类一
  15. Linux文件系统的创建与管理(上)
  16. error:there‘s no Qt version assigned to project please assign a Qt installation in qt project settin
  17. 振铃效应与样点自适应补偿(Sample Adaptive Offset,SAO)技术
  18. 2021vue面试题+答案
  19. 计算机主板上电源供电缩写,新电脑电源标准开始普及?取消5V、3.3V供电,主板供电变为10PIN...
  20. 如何保存网站上的背景图片

热门文章

  1. AR/VR是否会再一次全行业集体踏空(超长文+昆仲研究报告)
  2. 【信息收集】指纹识别
  3. 小镜--CSDN--报到
  4. Linux命令详解之 head和tail
  5. 【密码学原理与实践】(六)置换密码 符java代码实现
  6. 肇庆工贸计算机专业,肇庆市工贸高级职业技术学校
  7. 关于Ragdoll的坑,莫名抖动和蒙皮拉伸
  8. PTC Creo Illustrate生产技术设备
  9. Linux VI/VIM练习
  10. Timer定时器/计数器