如题,使用 addRoute 来动态添加路由的时候,从 store 里面调用 actions 的中一个方法从后端获取路由地址。然后再添加到路由中。 代码如下:
router.beforeEach(async (to, from, next) => {
NProgress.start(); // NProgress 开始
if (allowList.includes(to.name)) {
// 若跳转页面非免登录名单,则直接进入
next();
} else {
// 若当前页面需要登录
// 则判断当前页面是否已经拥有登录权限 token
if (storage.get('token')) {
const mainStore = useMainStore();
if (mainStore.routerList === null) {
mainStore.getRouterList().then(res => {
console.log(res)
router.addRoute(res)
next()
})
} else {
next()
}
} else {
// 没有 token 内容,所以进入登录页面
next({ path: '/user' })
}
}
})
但是浏览器运行到时候却报了警告!
vue-router.esm-bundler.js:72 [Vue Router warn]: The "next" callback was never called inside of :
async (to, from, next) => {
NProgress.start(); // NProgress 开始
if (allowList.includes(to.name)) {
// 若跳转页面非免登录名单,则直接进入
next();
} else {
// 若当前页面需要登录
// 则判断当前页面是否已经拥有登录权限 token
if (storage.get('token')) {
const mainStore = useMainStore();
if (mainStore.routerList === null) {
mainStore.getRouterList().then(res => {
console.log(res)
router.addRoute(res)
next()
})
} else {
next()
}
} else {
// 没有 token 内容,所以进入登录页面
next({ path: '/user' })
}
}
}
. If you are returning a value instead of calling "next", make sure to remove the "next" parameter from your function.
难道 next 方法不能放在函数中????
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.