vue 导航守卫

本文详细介绍了Vue的导航守卫机制,包括全局前置守卫、组件内守卫、路由独享守卫以及解析守卫的使用,重点阐述了beforeRouteLeave、beforeRouteUpdate、beforeRouteEnter等关键钩子的调用顺序和作用。
摘要由CSDN通过智能技术生成
 
实际项目中常用。在路由发生跳转到导航结束这一段时间内做相应的逻辑处理。(也就是每当进行路由跳转时,需要预先进行一些判断,这是就需要导航守卫)。比如登录验证(未登录去登录页)。
 
 
##全局守卫前置:按顺序调用。
const router = new Router({
   routes
})
router.beforeEach((to, from, next) => {
   //操作
})
 
接受三个参数:
  1. to:Route:即将要进入的目标路由对象
  2. from:Route:当前导航正要离开的路由
  3. next:function:一定要调用该方法来resolve这个钩子
 
 
## 后置钩子
router.afterEach((to,from) => {
//logining = false 
})
 
afterEach 一般是在路由跳转之后 进行的操作。这些钩子不会接受next函数也不会改变导航本身
 
 
## 路由独享的守卫:beforeEnter
在路由配置上直接定义beforeEnter守卫
 
 
 
 
##组件内守卫 (写在组件内)
 
1、beforeRouteEnter
next()函数不能忘,否则无法跳转。
注意:这个方法是在路由触发要进来这个页面的时候调用,此时页面还没有被渲染。如果这时使用this,是获取不到当前组件的实例的。
 
2、beforeRouteLeave
在路由页面即将离开的时候调用这个方法。比较常用,比如当前是个编辑页面,用户离开的时候需要提醒 编辑未完成,确定离开吗 这种情况。
 
3、beforeRouteUpdate
 
 
一个完整的导航解析流程:
  • 导航被触发
  • 在失活的组件(即将离开的页面组件)里调用离开守卫 beforeRouteLeave
  • 调用全局的前置守卫:beforeEach
  • 在重用的组件里调用:beforeRouteUpdate
  • 调用路由独享的守卫:beforeEnter
  • 解析异步路由组件
  • 在被激活的组件(即将进入的页面组件)里调用:beforeRouteEnter
  • 调用全局的解析守卫 beforeResolve
  • 导航被确认
  • 调用全局的后置守卫 afterEach
  • 触发DOM更新
  • 用创建好的实例调用beforeRouteEnter守卫里传给next的回调函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值