vue3中的VueRouter进阶
一、导航守卫
导航守卫分为:全局守卫、组件导航守卫以及路由导航守卫。下面分别来进行讲解。
1. 全局守卫:
全局守卫有beforeEach 和afterEach ,即在跳转前和跳转后的导航守卫。
首先看下beforeEach,示例代码如下:
1 | router.beforeEach((to, from) => { |
如果beforeEach的回调函数中返回的是true或者什么都没返回,则跳转到默认的路由,否则跳转到返回的路由。
afterEach导航路由为已经改变完成后的守卫。示例代码如下:
1 | router.afterEach(function(to,from){ |
2. 组件内导航守卫:
- onBeforeRouteLeave:在离开当前路由前调用。如果返回false,将会取消路由离开。比如:
1
2
3
4beforeRouteLeave (to, from) {
const answer = window.confirm('本页面还未保存,您确定要离开吗?')
if (!answer) return false
} - onBeforeRouteUpdate:在路由发生更新时调用,比如从/user/1更新到/user/2,就会执行该守卫方法。一般这个方法用的比较少。
3. 路由导航守卫:
在定义路由的时候,可以指定beforeEnter导航守卫,示例代码如下:
1 | const routes = [ |
二、路由元信息
有时,你可能希望将任意信息附加到路由上,如过渡名称、谁可以访问路由等。这些事情可以通过接收属性对象的meta属性来实现,并且它可以在路由地址和导航守卫上都被访问到。定义路由的时候你可以这样配置 meta 字段:
1 | const routes = [ |
那么以后可以通过路由.meta 访问到元数据。示例代码如下:
1 | router.beforeEach((to, from) => { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 青衫烟雨客!
