多语言展示
当前在线:1886今日阅读:86今日分享:14

vue-router钩子函数的使用方法

钩子函数的本质是一段用以处理系统消息的程序,通过系统调用,把它挂入系统。这里vue-router钩子函数则是指的在进入一个vue组件或者页面前中后等不同状态下,可执行的一段程序。
工具/原料
1

vscode

2

vue/cli

vue-router钩子函数的类型
一、全局类型。
1

全局前置守卫钩子函数:router.beforeEach((to, from, next) => {  // ...})其中有3个参数:to:即将要进入的目标 路由对象。from: 当前导航正要离开的路由。next: 一定要调用该方法来 resolve 这个钩子。

2

全局解析守卫钩子函数:router.beforeResolve((to, from, next) => {  // ...})和签名全局前置守卫钩子函数一样,也有3个参数,且含义一样:to:即将要进入的目标 路由对象。from: 当前导航正要离开的路由。next: 一定要调用该方法来 resolve 这个钩子。和全局前置守卫钩子的区别是:在导航被确认之前,同时在所有组件内守卫和异步路由组件被解析之后,解析守卫就被调用。

3

全局后置钩子函数:router.afterEach((to, from) => {  // ...})其中有2个参数:to:即将要进入的目标 路由对象。from: 当前导航正要离开的路由。由于没有next,所以该钩子函数不会接受 next 函数也不会改变导航本身。

二、路由独享类型。

路由独享类型其实就是在路由配置上直接定义的beforeEnter守卫钩子函数。功能和方法参数同全局前置守卫钩子,只是书写的位置不同,作用范围仅限当前路由对象。3个参数的含义和前面一样:to:即将要进入的目标 路由对象。from: 当前导航正要离开的路由。next: 一定要调用该方法来 resolve 这个钩子。

三、组件内的类型。
1

组件内的类型是指的在路由组件内直接定义的导航守卫钩子函数。beforeRouteEnter (to, from, next) {}3个参数的含义和前面一样:to:即将要进入的目标 路由对象。from: 当前导航正要离开的路由。next: 一定要调用该方法来 resolve 这个钩子。 但是需要注意,这里不能直接访问 this,因为守卫在导航确认前被调用,因此即将登场的新组件还没被创建,所以无法获取到新组件的vue实例。但是可以通过next函数的回调来访问。如图所示:

2

beforeRouteUpdate (to, from, next) {}3个参数的含义和前面一样:to:即将要进入的目标 路由对象。from: 当前导航正要离开的路由。next: 一定要调用该方法来 resolve 这个钩子。

3

beforeRouteLeave (to, from, next) {}3个参数的含义和前面一样:to:即将要进入的目标 路由对象。from: 当前导航正要离开的路由。next: 一定要调用该方法来 resolve 这个钩子。

注意事项

beforeRouteEnter中无法直接访问this实例,需要通过next回调来访问组件实例。

推荐信息