vue之路由钩子函数-路由守卫

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue之路由钩子函数-路由守卫相关的知识,希望对你有一定的参考价值。

参考技术A 1、vue router.beforeEach(全局前置守卫)

beforeEach的钩子函数,它是一个全局的before 钩子函数, (before each)意思是在 每次每一个路由改变的时候都得执行一遍。

它的三个参数:

to: (Route路由对象) 即将要进入的目标 路由对象 to对象下面的属性: path params query hash fullPath matched name meta(在matched下,但是本例可以直接用)

from: (Route路由对象) 当前导航正要离开的路由

next: (Function函数) 一定要调用该方法来 resolve 这个钩子。 调用方法:next(参数或者空) ***必须调用

next(无参数的时候): 进行管道中的下一个钩子,如果走到最后一个钩子函数,那么 导航的状态就是 confirmed (确认的)

next('/') 或者 next( path: '/' ): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。

2、vue router.afterEach(全局后置守卫)

router.beforeEach 是页面加载之前,相反router.afterEach是页面加载之后

你可以在路由配置上直接定义 beforeEnter 守卫:

这些守卫与全局前置守卫的方法参数是一样的。

(一) 清除当前组件中的定时器

当一个组件中有一个定时器时, 在路由进行切换的时候, 可使用beforeRouteLeave将定时器进行清楚, 以免占用内存:

(二) 当页面中有未关闭的窗口, 或未保存的内容时, 阻止页面跳转

如果页面内有重要的信息需要用户保存后才能进行跳转, 或者有弹出框的情况. 应该阻止用户跳转,结合vuex状态管理(dialogVisibility是否有保存)

(三) 保存相关内容到Vuex中或Session中

当用户需要关闭页面时, 可以将公用的信息保存到session或Vuex中

vue路由守卫

参考技术A 所谓路由守卫就是页面跳转时触发的钩子函数,我们称之为路由守卫,vue一共给我们提供了三种路由守卫,分别是全局路由守卫,组件内路由守卫,路由独享守卫,路由独享守卫是写在路由中的,这三种路由守卫都会有beforeEach,beforeResolve,afterEach三个钩子函数,分别表示跳转前,进入的时候,进入路由后触发的钩子函数,这三个钩子函数都有一个回调函数,里面有三个参数,分别为to,from,next分别表示将要进入的路由,离开之前的路由,下一个要进入的路由。

在项目中我们一般使用路由来实现页面的鉴权,比如,当用户登陆之后,我们可以把后台返回的token或者用户的一些信息存入本地存储或vuex中,当用户跳转页面时,我们会在路由中判断本地是否存有token,如果有token则使用next方法让用户跳转到相应的页面,没有则使用next方法让用户返回到登录页

以上是关于vue之路由钩子函数-路由守卫的主要内容,如果未能解决你的问题,请参考以下文章

vue2路由导航守卫(钩子函数)

vue路由守卫

18、 vue-router导航解析及钩子函数

Vue的钩子函数[路由导航守卫keep-alive生命周期钩子]

vue路由导航守卫及前置后置钩子函数参数详解

vue-router导航守卫