如何解决addRoutes刷新后失效的问题?

如题,用addRoutes控制路由权限,如果正常操作登录点菜单路由拦截没有问题,add很ok,问题在于一刷新页面router就还原成初始数据了,我尝试在刷新后再次addRoutes,然而并没有效果,还是一片空白,虽然不明白为什么,讲道理是在router.beforeEach里加的,不明白为什么没效果,部分代码如下

appRouter.beforeEach((to, from, next) => {
    if (to.matched.length === 0) {
        next({ path: 'notFound' })
    } else {
        if (to.path === '/login') {
            if (getToken()) {
                next({ path: '/' })
            } else {
                next()
            }
        } else {
            if (getToken()) {
                if (appStore.getters.role.length === 0) {
                    commonApi.getUserInfo().then(({data: {resultCode, result, msg}}) => {
                        appStore.dispatch('setRoleRouter', result.role).then((res) => {
                            appRouter.addRoutes(res)
                            next()
                        })
                    })
                } else {
                    next()
                }
            } else {
                next({ path: '/login' })
            }
        }
    }
})

求大佬解答

阅读 4.3k
3 个回答

看看是不是重定向的问题,404页面放在异步路由里面的最后面!

新手上路,请多包涵

兄dei 怎么解决的?

新手上路,请多包涵

参考网上实例,都是这样写,说没问题,但都不生效,最后 把next() 改成next(to) 重新跳转一次,生效,解决问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题