关于路由守卫,你知道多少?

215 阅读2分钟

路由守卫的分类

路由守卫有三种,分别是全局路由守卫。独享路由守卫。组件内的路由守卫,关于路由守卫,我们需要了解其是在上面时候运行的,他们的执行顺序是什么。 了解一下路由的几个参数;

  • to:进入的目标路由;
  • form:即将要离开的路由对象;
  • next:控制路由 在跳转时进行的操作;

全局路由守卫

全局路由守卫有三种,我们先来了解其中最常见的一种

全局前置路由守卫(beforeEach) 它是初始化的时候被调用,每次路由切换之前调用;

  • 使用场景:通常被用作登录验证,

全局解析守卫(beforeResolve) 在 beforeEach 和 组件内beforeRouteEnter 之后,afterEach之前调用。

全局后置路由守卫 (afterEach) 除了这个路由没有next参数,其他所有的路由都有三个参数(to,from,next) 初始化的时候被调用,每次路由切换之后调用;

  • 使用场景:可以用来修改网页的title 、跳转之后滚动条回到顶部

独享路由守卫

路由独享守卫(beforeEnter)

写在路由规则里面 进入该路由是被调用,可以用来判断当前路由是否需要权限限制

组件内的路由守卫

进入守卫(beforeRouteEnter) 通过路由规则进入该组件前调用 ,写在组件内

修改守卫(beforeRouteUpdate) 当前地址改变并且改组件被复用时触发

  • 使用场景:带有动态参数的路径foo/∶id,在 /foo/1 和 /foo/2 之间跳转的时候,由于会渲染同样的foo组件,这个钩子在这种情况下就会被调用

离开守卫(beforeRouteLeave) 通过路由规则离开该组件后调用,写在组件内

路由守卫的执行顺序

  • 触发进入其他路由。
  • 调用要离开路由的组件守卫beforeRouteLeave
  • 调用局前置守卫∶ beforeEach
  • 在重用的组件里调用 beforeRouteUpdate
  • 调用路由独享守卫 beforeEnter。
  • 解析异步路由组件。
  • 在将要进入的路由组件中调用 beforeRouteEnter
  • 调用全局解析守卫 beforeResolve
  • 导航被确认。
  • 调用全局后置钩子的 afterEach 钩子。
  • 触发DOM更新(mounted)。
  • 执行beforeRouteEnter 守卫中传给 next 的回调函数

参考文章链接:juejin.cn/post/694424… juejin.cn/post/696477…