Vue路由守卫之组件内路由守卫
beforeRouteEnter,进入路由前。需要注意这里不能使用this,因为我们使用的是进入路由之前,那会组件还没创建,得不到this这个属性,所有我们只能使用过vm异步语句来让节点上树;
<script>
export default {
data(){
return{
num : 10
}
},
beforeRouteEnter:(to,from,next)=>{
next(vm=>{
alert(vm.num)
})
},
}
</script>
运行后可以看到,在使用beforeRouteEnter,使用的vm异步语句得到
beforeRouteLeave:离开路由之前可以被调用,可以访问里面的this属性!
<script>
export default {
data(){
return{
num : 10
}
},
beforeRouteLeave (to, from, next) {
if(confirm('确定离开吗?') === true){
next()
}else{
next('aa')
}
}
}
</script>
运行后可以看到,使用beforeRouteLeave(离开路由之前),系统会询问是否要离开,点击取消系统不会跳转,点击确定之后系统才会跳转离开。所以我们可以在离开路由之前做一些事情;
为大家奉上导航守卫完整的解析流程
-
导航被触发。
-
在失活的组件里调用离开守卫。
-
调用全局的
beforeEach守卫。 -
在重用的组件里调用
beforeRouteUpdate守卫 (2.2+)。 -
在路由配置里调用
beforeEnter。 -
解析异步路由组件。
-
在被激活的组件里调用
beforeRouteEnter。 -
调用全局的
beforeResolve守卫 (2.5+)。 -
导航被确认。
-
调用全局的
afterEach钩子。 -
触发 DOM 更新。
-
用创建好的实例调用
beforeRouteEnter守卫中传给next的回调函数。
下面为大家附上源码地址 https://gitee.com/web94/vuezujianneiluyou
如果觉得不错请点点手指,关注下我们公众号,我们会长期为您分享前端知识点;

浙公网安备 33010602011771号