Vue3 全局前置守卫中获取不到 meta 里面的值可能是因为 Vue3 中对路由守卫进行了一些改动。

在 Vue3 中,全局前置守卫的参数发生了变化,不再是之前的 (to, from, next),而是变为了一个包含 tofrom 属性的路由守卫钩子函数参数对象。因此,要获取 meta 里面的值,可以通过访问 to.meta 来获取。

下面是一个示例代码,展示了如何在 Vue3 中获取全局前置守卫中的 meta 值:

import { createRouter, createWebHistory } from 'vue-router';

const router = createRouter({
  history: createWebHistory(),
  routes: [
    {
      path: '/foo',
      component: () => import('./components/Foo.vue'),
      meta: { requiresAuth: true }
    },
    // other routes...
  ]
});

router.beforeEach((to, from, next) => {
  // 获取 meta 值
  const requiresAuth = to.meta.requiresAuth;
  
  // 进行相应的操作

  next();
});

以上代码中,我们可以通过 to.meta.requiresAuth 获取到 meta 中的 requiresAuth 值。

需要注意的是,如果你使用了路由组件懒加载(如 import('./components/Foo.vue')),则在获取 meta 值之前需要确保组件已经加载完成,否则可能会得到 undefined

vue3全局前置守卫获取不到meta里面的值是为什么

原文地址: https://www.cveoy.top/t/topic/hMuG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录