vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue导航守卫

Vue导航守卫使用教程详解

作者:蒲公英想养花

这篇文章主要介绍了Vue导航守卫使用教程,可以向任意给定的导航守卫传递next,但是next的使用过程容易出错,需要确保next在任何给定的导航守卫中都被严格调用一次

作用:通过跳转或取消的方式守卫导航

植入方式:

守卫参数

注意:可以向任意给定的导航守卫传递next,但是next的使用过程容易出错,需要确保next在任何给定的导航守卫中都被严格调用一次。(可以出现多于一次,但是只能在所有逻辑路径都不重叠的情况,否则钩子永远不会被解析或者报错)

守卫返回值

全局守卫

全局前置守卫

const router = createRouter({...})
router.beforeEach((to, from) => {
})

全局解析守卫

router.beforeResolve(async to => {
})

全局后置钩子

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

单个路由独享守卫

const routes = [{
    path: '/users/:id',
    component: UserDetails,
    beforeEnter: (to, from) => {
    },
    // beforeEnter: [removeQuery, removeHash]
}]

组件级守卫

注意:beforeRouteEnter 是支持给 next 传递回调的唯一守卫

beforeRouteEnter(to, from, next) {
    next(vm => {
        // 通过'vm'访问组件实例
    })
}

离开守卫:通常用来预防用户在还未保存修改前突然离开,可以通过返回false来取消

完整的导航解析流程

  1. 导航被触发
  2. 在离开的组件里调用 beforeRouteLeave 守卫
  3. 调用全局的 beforeEach 守卫
  4. (如果是重用组件)调用 beforeRouteUpdate 守卫
  5. 在路由配置里调用 beforeEnter
  6. 解析异步路由组件
  7. 在被激活的组件里调用 beforeRouteEnter
  8. 调用全局的 beforeResolve 守卫
  9. 导航被确认
  10. 调用全局的 afterEach 钩子
  11. 触发 DOM 更新
  12. 调用 beforeRouteEnter 守卫中传给 next 的回调函数,创建好的组件实例会作为回调函数的参数传入

总结

全局守卫

单个路由独享守卫

组件级守卫

到此这篇关于Vue导航守卫使用教程详解的文章就介绍到这了,更多相关Vue导航守卫内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文