2021-10-11 Vue-router路由导航守卫

全局前置守卫

守卫是异步进行的,在所有守卫resolve之前,路由一直处于waiting等待中,当导航触发的时候,全局前置守卫按照顺序执行
前置守卫router.beforeEach()有三个参数:
to:导航要去的地址
from:导航原本的地址
next:执行下一个守卫
next(false)代表中断当前导航,如果URL发生改变,会回到from的URL去;
next(’/’)代表路由跳转到指定url
next(error)如果next被传入一个Error实例,那么导航将被终止并且进入router.error()注册的回调中去

全局解析守卫

全局解析守卫在所有组件守卫和异步路由组件被解析完以后被调用;router.beforeResolve

全局后置守卫

在导航被确认后的回调,router.afterEach();
应用场景:滚回页面顶部,更新页面title,懒加载结束

路由独享的守卫

每个路由独享的前置守卫beforeEnter

const router = new VueRouter({
	route: [{
		path: '/login',
		component: login,
		beforeEnter: (to, from, next){
			//do somethiing
		}
	}]
})

组件内守卫

export default {
	beforeRouteEnter(to, from. next){
		//不能使用`this`,因为调用时还没有构建组件
		//在渲染组件被confirm之前调用
	}beforeRouteUpdate(to, from, next) {
		//当前路由改变,但是组件被复用的时候调用,比如动态参数路径
		//可以使用this
	},
	beforeRouteLeave(to, from) {
		//导航离开该组件调用的钩子
	}
}

完整的导航解析流程

  1. 路由改变,导航触发
  2. 失活组件调用beforeRouteLeave
  3. 全局前置beforeEach触发
  4. 重用组件触发beforeRouteUpdate
  5. 加载路由之前beforeEnter
  6. 被激活的路由触发beforeRouteEnter
  7. 加载异步路由组件和组件beforeResolve
  8. 导航被确认
  9. 全局后置钩子afterEach
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值