vue-router全局导航守卫

官方释义:正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。

记住参数或查询的改变并不会触发进入/离开的导航守卫。你可以通过观察 $route 对象来应对这些变化,或使用 beforeRouteUpdate 的组件内守卫。
https://router.vuejs.org/zh/guide/advanced/navigation-guards.html#%E5%85%A8%E5%B1%80%E5%89%8D%E7%BD%AE%E5%AE%88%E5%8D%AB

全局前置守卫

router.beforeEach

const router = new VueRouter({ ... })

router.beforeEach((to, from, next) => {
  // ...
})

里面回调函数有三个参数:

  • to: Route: 即将要进入的目标路由对象

  • from: Route: 当前导航正要离开的路由

  • next: Function: 一定要调用该方法来 resolve 这个钩子。

一般来说,这个函数适合去处理一些路由权限加载之类的。

全局解析守卫

router.beforeResolve,这和 router.beforeEach 类似,区别是在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就被调用,没怎么用过。

全局后置守卫

router.afterEach

router.afterEach((to, from) => {
  // ...
})

注意这个地方没有next 函数,因为这个时候路由导航已经确认了,next也没有意义了。

你可能感兴趣的:(vue-router全局导航守卫)