Vue 3.x vue-router 导航守卫

发布于 2024-11-27 06:43:19 字数 2225 浏览 14 评论 0

全局守卫与钩子

// 全局前置守卫 
// 当一个导航触发时,全局前置守卫按照创建顺序调用。
// 异步解析执行
// 导航在所有全局前置守卫 resolve 完之前一直处于等待中
router.beforeEach((to, from, next) => {
  console.log('beforeEach')
  next()
})
// 全局解析守卫 在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后
router.beforeResolve((to, from, next) => {
  console.log('beforeResolve')
  next()
})
// 全局后置钩子 不会接受 next 函数也不会改变导航本
router.afterEach((to, from) => {
  console.log('afterEach')
})

路由独享的守卫

{
  path: '/home',
  name: 'Home',
  component: () => import(/* webpackChunkName: "home" */ '@/views/Home.vue'),
  beforeEnter: (to, from, next) => {
    // 和 beforeEach 完全相同,如果都设置则在 beforeEach 之后紧随执行
    console.log('beforeEnter')
    next()
  },
},

组件内的守卫

// 在渲染该组件的对应路由 被 confirm 前调用
// 不!能!获取组件实例 `this`
// 因为当守卫执行前,组件实例还没被创建,但是可以通过 next 回调去获取
beforeRouteEnter (to, from, next) {
  console.log('beforeRouteEnter')
  next(vm => {
    console.log('beforeRouteEnter next 回调 在 created 和 mounted 之间被调用')
  })
},
// 在当前路由改变,但是该组件被复用时调用
// 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
// 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
// 可以访问组件实例 `this`
beforeRouteUpdate (to, from, next) {
  console.log('beforeRouteUpdate')
  next()
},
// 导航离开该组件的对应路由时调用
// 可以访问组件实例 `this`
beforeRouteLeave (to, from, next) {
  console.log('beforeRouteLeave')
  next()
},

组件内的守卫只能在 component 对应的那个组件里面生效, 至于 component 里面又引用其他组件,其他组件的组件内的守卫不生效

所以对于 lazyLoadView 模式,只能写在下面

return Promise.resolve({
  functional: true,
  beforeRouteEnter (to, from, next) {
    console.log('beforeRouteEnter')
    next(vm => {
      console.log('lazyLoadView beforeRouteEnter next 回调 在 created 和 mounted 之间被调用')
    })
  },
  render (h, { data, children }) {
    return h(AsyncHandler, data, children)
  },
})

触发顺序

beforeRouterLeave --> beforeEach --> beforeEnter --> beforeRouteEnter --> beforeResolve --> afterEach --> created --> beforeRouteEnter 的 next 回调 --> mounted

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

只想待在家

暂无简介

文章
评论
26 人气
更多

推荐作者

身边

文章 0 评论 0

qq_oxT0yE

文章 0 评论 0

卷着的草席

文章 0 评论 0

£冰雨忧蓝°

文章 0 评论 0

我还不会笑

文章 0 评论 0

Unbroken

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文