Open Twlig opened 2 years ago
导航守卫就是路由跳转过程中的一些钩子函数。vue-router提供的导航守卫主要用来通过跳转或取消的方式守卫导航。
全局守卫:是指路由实例上直接操作的钩子函数,特点是所有路由配置的组件都会触发,直白点就是触发路由就会触发这些钩子函数
beforeEach(to,from, next)
全局前置守卫。
beforeResolve(to,from, next)
全局解析守卫,在所有组件内守卫和异步路由组件被解析之后,解析守卫就被正确调用。
afterEach(to,from)
全局后置钩子。此时路由已经发生转换,因此,该函数不会接受 next 函数也不会改变导航本身。
路由守卫: 是指在单个路由配置的时候也可以设置的钩子函数
beforeEnter(to,from, next)
只在进入路由时触发,不会在 params、query 或 hash 改变时触发。例如,从 /users/2 进入到 /users/3 或者从 /users/2#info 进入到 /users/2#projects。它们只有在 从一个不同的 路由导航时,才会被触发。
组件守卫:是指在组件内执行的钩子函数,类似于组件内的生命周期,相当于为配置路由的组件添加的生命周期钩子函数。
beforeRouteEnter(to,from, next)
在渲染该组件的对应路由被验证前调用,不能获取组件实例 this , 因为当守卫执行时,组件实例还没被创建!
this
beforeRouteUpdate(to,from, next)
在当前路由改变,但是该组件被复用时调用。举例来说,对于一个带有动态参数的路径 /users/:id,在 /users/1 和 /users/2 之间跳转的时候。
/users/:id
/users/1
/users/2
beforeRouteLeave(to,from, next)
在导航离开渲染该组件的对应路由时调用。
beforeRouteLeave
beforeEach
beforeRouteUpdate
beforeEnter
beforeRouteEnter
beforeResolve
afterEach
next
原文连接:
导航守卫就是路由跳转过程中的一些钩子函数。vue-router提供的导航守卫主要用来通过跳转或取消的方式守卫导航。
路由守卫分类
全局守卫:是指路由实例上直接操作的钩子函数,特点是所有路由配置的组件都会触发,直白点就是触发路由就会触发这些钩子函数
beforeEach(to,from, next)
全局前置守卫。
beforeResolve(to,from, next)
全局解析守卫,在所有组件内守卫和异步路由组件被解析之后,解析守卫就被正确调用。
afterEach(to,from)
全局后置钩子。此时路由已经发生转换,因此,该函数不会接受 next 函数也不会改变导航本身。
路由守卫: 是指在单个路由配置的时候也可以设置的钩子函数
beforeEnter(to,from, next)
只在进入路由时触发,不会在 params、query 或 hash 改变时触发。例如,从 /users/2 进入到 /users/3 或者从 /users/2#info 进入到 /users/2#projects。它们只有在 从一个不同的 路由导航时,才会被触发。
组件守卫:是指在组件内执行的钩子函数,类似于组件内的生命周期,相当于为配置路由的组件添加的生命周期钩子函数。
beforeRouteEnter(to,from, next)
在渲染该组件的对应路由被验证前调用,不能获取组件实例
this
, 因为当守卫执行时,组件实例还没被创建!beforeRouteUpdate(to,from, next)
在当前路由改变,但是该组件被复用时调用。举例来说,对于一个带有动态参数的路径
/users/:id
,在/users/1
和/users/2
之间跳转的时候。beforeRouteLeave(to,from, next)
在导航离开渲染该组件的对应路由时调用。
路由守卫回调参数介绍
完整导航流程
beforeRouteLeave
守卫。beforeEach
守卫。beforeRouteUpdate
守卫(2.2+)。beforeEnter
。beforeRouteEnter
。beforeResolve
守卫(2.5+)。afterEach
钩子。beforeRouteEnter
守卫中传给next
的回调函数,创建好的组件实例会作为回调函数的参数传入。原文连接: