vue-router 路由元信息meta

本文详细介绍了Vue Router中Meta字段的使用方法及其应用场景,包括如何通过Meta字段进行路由权限控制及导航守卫的具体实现。
const router = new VueRouter({
  routes: [
    {
      path: '/foo',
      component: Foo,
      children: [
        {
          path: 'bar',
          component: Bar,
          // a meta field
          meta: { requiresAuth: true }
        }
      ]
    }
  ]
})

meta原信息是一个可以给路由记录携带一个对象的字段(字段名只能为meta,其他的设置了也没用),你可以在这个字段里存一些信息,例如该路由地址是否需要身份验证、该地址是否需要导航栏等。
获取方式如下:

this.$route.meta

vue-router官方例子如下,是一个根据meta判断该路径是否需要验证登录人的过程。

注意:在导航守卫中的路由对象中,meta是在matched数组中的,并不能直接获取到。

router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.requiresAuth)) {
    // this route requires auth, check if logged in
    // if not, redirect to login page.
    if (!auth.loggedIn()) {
      next({
        path: '/login',
        query: { redirect: to.fullPath }
      })
    } else {
      next()
    }
  } else {
    next() // 确保一定要调用 next()
  }
})

使用注意事项:我们可以通过this.$route.meta.requiresAuth = false直接对meta进行修改,并且跳到其他路由地址,该路由地址上的meta也不会恢复最初的结果,而是保留修改后的数据,但是不能刷新,如果在任意地址刷新了页面,则meta会恢复最初的样子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值