vue3全局前置守卫获取不到meta里面的值是为什么
Vue3 全局前置守卫中获取不到 meta 里面的值可能是因为 Vue3 中对路由守卫进行了一些改动。
在 Vue3 中,全局前置守卫的参数发生了变化,不再是之前的 (to, from, next),而是变为了一个包含 to 和 from 属性的路由守卫钩子函数参数对象。因此,要获取 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
原文地址: https://www.cveoy.top/t/topic/hMuG 著作权归作者所有。请勿转载和采集!