vue的导航钩子有哪几个

vue导航钩子有3种:1、全局守卫钩子,是指路由示例上直接操作的钩子函数,特点是所有路由配置的组件都会触发。2、路由独享守卫钩子,是指在单个路由配置的时候也可以设置的钩子函数,且只能在这个路由下起作用。3、局部守卫钩子,是指在组件内执行的钩子函数,类似于数组内的生命周期函数,相当于为配置路由的组件添加的生命周期钩子函数。

vue的导航钩子有哪几个

本教程操作环境:windows7系统、vue3版,DELL G3电脑。

导航钩子的作用

vue-router提供的导航钩子主要用来拦截导航,让它完成跳转或取消。

导航钩子的分类

全局守卫路由独享守卫局部守卫

1、全局守卫

是指路由示例上直接操作的钩子函数,特点是所有路由配置的组件都会触发。简单点说就是触发路由就会触发这些钩子函数。钩子函数执行顺序包括beforeEach、beforeResolve、afterEach三个。

立即学习“前端免费学习笔记(深入)”;

[beforeEach]:在路由跳转前触发,参数包括to,from,next三个,这个钩子作用主要是用于登录验证,也就是路由还没跳转提前告知,以免跳转了再通知就为时已晚。

 router.beforeEach  router.beforeResolve  router.afterEach    const router = new VueRouter({ ... });    router.beforeEach((to, from, next) => {        // do someting    });

登录后复制to:代表要进入的目标,它是一个路由对象from:代表当前正要离开的路由,同样也是一个路由对象next:这是一个必须需要调用的方法,而具体的执行效果则依赖next方法调用的参数

[beforeResolve]:这个钩子和beforeEach类似,也是路由跳转前触发,参数也是to,from,next三个,和beforeEach区别官方解释为:

 区别是在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就会被调用。

即在beforeEach和组件内beforeRouteEnter之后,afterEach之后,afterEach之前调用。

[afterEach]:和beforeEach相反,它是在路由跳转完成之后触发,参数包括to、from,没有了next,它发生在beforeEach和beforeResolve之后,beforeRouteEnter(足迹按内守卫)之前。

 const router = new VueRouter({ ... });    router.beforeEach((to, from, next) => {        // do someting    });  //全局后置钩子,后置钩子并没有 next 函数,也不会改变导航本身    router.afterEach((to, from) => {        // do someting    });

登录后复制

2、路由独享守卫

是指在单个路由配置的时候也可以设置的钩子函数,且只能在这个路由下起作用。其位置如下,也就是像File这样的组件都存在这样的钩子函数。目前它只有一个钩子函数beforeEnter。

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

  cont router = new VueRouter({        routes: [            {                path: '/file',                component: File,                beforeEnter: (to, from ,next) => {                    // do someting                }            }        ]    });

登录后复制

3、局部守卫

是指在组件内执行的钩子函数,类似于数组内的生命周期函数,相当于为配置路由的组件添加的生命周期钩子函数。钩子函数按执行顺序包括beforeRouteEnter、beforeRouteUpdate(2.2新增)、beforeRouteLeave三个,执行位置如下:

 const File = {        template: `
This is file
`,        beforeRouteEnter(to, from, next) {            // do someting            // 在渲染该组件的对应路由被 confirm 前调用        },        beforeRouteUpdate(to, from, next) {            // do someting            // 在当前路由改变,但是依然渲染该组件是调用        },        beforeRouteLeave(to, from ,next) {            // do someting            // 导航离开该组件的对应路由时被调用        }    }

登录后复制

路由跳转导航解析流程,当由A路由–>B路由的时候

1、在A组件里调用离开守卫。 A组件中的beforeRouterLeave

2、调用全局的beforeEach守卫。 router.beforeEach

3、再执行B路由配置里调用beforeEnter。

routes:[      {          path:'/b',          component:B,          beforeEnter:(to,form,next)=>{             .....           }      }  ]

登录后复制

4、再执行B组件的进入守卫。 B组件中beforeRouterEnter

5、调用全局的beforeResolve守卫(2.5+)。 router.beforeResolve

6、导航被确认。

7、调用全局的afterEach钩子。 router.afterEach

8、触发DOM更新。

【相关推荐:vuejs视频教程、导航钩子的作用

vue-router提供的导航钩子主要用来拦截导航,让它完成跳转或取消。

导航钩子的分类

全局守卫路由独享守卫局部守卫

1、全局守卫

是指路由示例上直接操作的钩子函数,特点是所有路由配置的组件都会触发。简单点说就是触发路由就会触发这些钩子函数。钩子函数执行顺序包括beforeEach、beforeResolve、afterEach三个。

立即学习“前端免费学习笔记(深入)”;

[beforeEach]:在路由跳转前触发,参数包括to,from,next三个,这个钩子作用主要是用于登录验证,也就是路由还没跳转提前告知,以免跳转了再通知就为时已晚。

以上就是vue的导航钩子有哪几个的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2924139.html

(0)
上一篇 2025年3月11日 18:54:12
下一篇 2025年2月25日 18:45:04

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vscode写vue没有高亮语法怎么办

    解决方法:1、打开vscode,点击扩展功能;2、在打开的窗口中搜索并安装Vetur插件;3、在顶部菜单中,依次点击“文件”-“首选项”-“设置”-“用户”-“文本编辑器”,找到并编辑“setting.json”文件;4、在配置文件中找到“…

    2025年3月11日 编程技术
    200
  • 移动web开发能用vue吗

    移动web开发能用vue。Vue是一个开源JavaScript框架,能够开发单页面应用程序;它可以用作Web应用程序框架,旨在简化Web开发。vue支持移动端开发,适合制作移动端的Webapp;其入门成本低、快速上手,可以结合i-view、…

    2025年3月11日 编程技术
    200
  • vue的导航链接组件是什么

    vue的导航链接组件是“router-link”。“”组件支持用户在具有路由功能的应用中点击导航,通过to属性指定目标地址,语法为“…”;默认渲染为带有正确连接的“”标签,可以通过配置tag属性生成别的标签。 本教程操作环境:w…

    2025年3月11日 编程技术
    200
  • vue是实时刷新dom吗

    vue不是实时刷新dom。Vue中的数据更新是异步的,意味着在修改完Data之后并不能立刻获取修改后的DOM元素。Vue在更新DOM时是异步执行的,只要侦听到数据变化,Vue将开启一个队列,并缓冲在同一事件循环中发生的所有数据变更,如果同一…

    2025年3月11日 编程技术
    200
  • vue的混入可以使用生命周期吗

    vue的混入可以使用生命周期。mixins(混入)中的生命周期会与引入mixins的组件的生命周期整合在一起调用,而且mixins中的生命周期函数会比引入mixins的组件调用的快。需要注意,多个mixins的生命周期会融合到一起运行,但是…

    2025年3月11日 编程技术
    200
  • vue项目只有一个vue实例么

    不是,vue项目中可以包含多个vue实例。在vue项目中,一般只有一个VUE实例在main.js中定义,其他都是vue组件实例。Vue是由一个个实例构建而成的,一个组件就是一个Vue的实例,每个组件内部都可以写属性,因此每一个组件都是一个V…

    2025年3月11日 编程技术
    200
  • vue适用多页面应用吗

    vue适用多页面应用。vue在工程化开发的时候依赖于webpack,而webpack是将所有的资源整合到一块后形成一个html文件 一堆js文件;如果想使用vue实现多页面应用,就需要对它的依赖进行重新配置,即通过修改webpack配置来让…

    2025年3月11日 编程技术
    200
  • 怎么查询当前vue的版本

    查询当前vue版本的两种方法:1、在cmd控制台内,执行“npm list vue”命令查询版本,输出结果就是vue的版本号信息;2、在项目中找到并打开package.json文件,查找“dependencies”项即可看到vue的版本信息…

    2025年3月11日
    200
  • vue运用了哪些模式

    vue运用的设计模式:1、单例模式,确保一个类只有一个实例对象,并提供一个全局访问点供其访问。2、工厂模式,是用来创建对象的一种模式,不必暴露构造函数的具体逻辑,而是将逻辑封装在一个个函数之中。3、装饰器模式,允许向现有的函数添加新的功能,…

    2025年3月11日
    200
  • vue组件中data不能是函数吗

    不是,vue组件中data必须是一个函数。vue中组件是用来复用的,为了防止data复用,将其定义为函数。vue组件中的data数据都应该是相互隔离,互不影响的,组件每复用一次,data数据就应该被复制一次,之后,当某一处复用的地方组件内d…

    2025年3月11日 编程技术
    200

发表回复

登录后才能评论