路由的守卫和导航规则(路由的守卫和导航规则是什么)

路由的守卫和导航规则(路由的守卫和导航规则是什么)nbsp 目录 一 路由守卫的概念 二 路由守卫的分类 一 全局路由守卫 二 组件路由守卫 三 路由独享守卫 三 完整的导航解析流程 四 对于三个参数的解读 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 路由守卫主要用来通过 跳转或取消的方式守卫导航 有多种机会植入路由导航过程中 全局的 单个路由独享的 或者组件级的 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 可以简单的理解为一座房子的门口的保安



 

目录

一、路由守卫的概念

二、路由守卫的分类

(一)全局路由守卫

(二)组件路由守卫

(三)路由独享守卫

三、完整的导航解析流程

四、对于三个参数的解读


        路由守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。

        可以简单的理解为一座房子的门口的保安,想要进入这个房子就必须通过保安的检查,要告诉路由守卫你从哪里来?总不能随便陌生人就给放进去?要到哪里去?然后保安再告诉你下一步该怎么做?如果你的确是这个房子主人允许进入的人,那就让你进入,否则就要打电话给房子主人,跟房主商量(登录注册),给你权限。

(一)全局路由守卫

        所谓全局路由守卫,就是小区大门,整个小区就这一个大门,你想要进入其中任何一个房子,都需要经过这个大门的检查
        全局路由守卫有个两个:一个是全局前置守卫,一个是全局后置守卫 ,钩子函数按执行顺序包括beforeEachbeforeResolveafterEach三个。

        1. [beforeEach]:在路由跳转前触发,参数包括to,from,next(参数会单独介绍)3个,这个钩子作用主要是用于登录验证,就是路由还没跳转前告知,跳转后再通知就晚了。

        2.[beforeResolve]:在组件被解析后,这个钩子函数和beforeEach类似,也是路由跳转前触发,参数也是to,from,next三个。

        3.[afterEach]:和beforeEach相反,它是在路由跳转完成后触发,参数包括to,from没有next,它发生在beforeEach和beforeResolve之后,beforeRouteEnter之前。

 
   

(二)组件路由守卫

        组件路由守卫就是在组件内执行的钩子函数,类似于组件内的生命周期钩子函数按执行顺序为beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave三个。

        1.[beforeRouteEnter]:路由进入之前调用,参数包括to,from,next。该钩子函数在全局守卫beforeEach和独享守卫beforeEnter之后,全局beforeResolve和全局afterEach之前调用。

        2.[beforeRouteUpdate] :在当前路由改变时,并且该组件被复用时调用,可以通过this访问实例。参数包括to,from,next。当前路由query变更时,该守卫会被调用

        3.[beforeRouteLeave]:导航离开该组件的对应路由时调用,可以访问组件实例this,参数包括to,from,next。

 
   

(三)路由独享守卫

        直接在路由配置上定义  守卫:

        [beforeEnter]:和beforeEach完全相同,如果都设置则在beforeEach之后紧随执行,参数to、from、next

 
   
  1. 导航被触发。
  2. 在失活的组件里调用  守卫。
  3. 调用全局的  守卫。
  4. 在重用的组件里调用  守卫(2.2+)。
  5. 在路由配置里调用 。
  6. 解析异步路由组件。
  7. 在被激活的组件里调用 。
  8. 调用全局的  守卫(2.5+)。
  9. 导航被确认。
  10. 调用全局的  钩子。
  11. 触发 DOM 更新。
  12. 调用  守卫中传给  的回调函数,创建好的组件实例会作为回调函数的参数传入。

        1.to:目标路由对象,即即将要去的地方;

        2.from:即将要离开的路由对象;

        3.next:它是最重要的一个参数,调用该方法后,才能进入下一个钩子函数。

        (1)next()        //直接进to 所指路由
        (2)next(false)         //中断当前路由
        (3)next('route')         //跳转指定路由
        (4)next('error')         //跳转错误路由


更多详情请参考官方文档——

今天的文章 路由的守卫和导航规则(路由的守卫和导航规则是什么)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-11-06 09:51
下一篇 2025-11-06 09:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/15344.html