vue-router有哪几种导航钩子( 导航守卫 )
时间: 2023-09-06 20:00:51 浏览: 176
详解vue-router的导航钩子(导航守卫)
5星 · 资源好评率100%
Vue-router中有三种导航钩子(导航守卫)。
1. 全局前置守卫:通过router.beforeEach注册的全局前置守卫会在路由切换开始前调用。可以用来进行身份验证、权限验证等操作。全局前置守卫是一个函数,接收三个参数:to (即将进入的路由对象)、from (当前导航正要离开的路由对象) 和 next (一定要调用该方法来resolve这个钩子)。
2. 路由独享的守卫:可以在定义路由的时候通过beforeEnter配置路由独享的守卫。具体使用方法是在路由配置中传入beforeEnter字段,其值为一个函数,该函数接收三个参数:to、from 和 next。与全局前置守卫类似,也可以用来进行身份验证、权限验证等操作。
3. 组件内守卫:在组件内可以通过beforeRouteEnter、beforeRouteUpdate 和 beforeRouteLeave这三个路由守卫来定义组件级别的导航守卫。beforeRouteEnter在路由进入时调用,beforeRouteUpdate在当前路由复用的组件内发生变化时调用,beforeRouteLeave在离开当前路由时调用。这些守卫是在组件的生命周期钩子之前调用的,因此无法直接访问this,需要使用next回调函数来指示路由是否可以继续。
总之,通过全局前置守卫、路由独享的守卫和组件内守卫,我们可以对路由的导航进行详细的控制和处理,以实现各种需求和功能。
阅读全文