addroutes()后正常能打开,刷新页面失效
用的是@花裤衩 的后台框架
if (hasToken) { if (to.path === '/login') {
next({ path: '/' })
} else {
const hasRoles = store.getters.userRole && store.getters.userRole.length> 0
if (hasRoles) {
next()
} else {
try {
const info = sessionStorage.getItem('userRole')
const roles = [info]
store.commit('user/SET_ROLE',info)
const accessRoutes = await store.dispatch('permission/generateRoutes', roles)
router.addRoutes(accessRoutes)
console.log(accessRoutes)
next({ ...to, replace: true })
} catch (error) {
}
}
}
}
export const asyncRoutes = [ {
path: '/user',
component: Layout,
redirect: '/user/managerUser',
meta: { title: '用户管理', icon: 'user',state: '1',roles: ['1']},
children: [
{
path: 'manager',
component: () => import('@/views/main/user/managerUser'),
name: 'ManagerUser',
meta: { title: '后台用户管理', state: '1',roles: ['1'] }
}
]
},
]
目前的情况:能正常打开权限页面,但是在动态权限页面刷新后跳转404
打印了路由表,在404的时候,看到路由表末尾也挂载了动态路由
我的想法:1. 先判断vuex中有没有role,如果有直接next(),如果没有,去sessionstorage取(在登录的时候存了role)
- 初次进来的时候vuex中没有role,所以去取出sessionstorage的role,此时页面正常挂载了动态路由
- 刷新页面的时候,vuex丢失,进入else,去取sessionstorage,为什么此时通过打印发现,先进了else,addroutes()也执行了,但是又进了if,并且页面进了404 ?
回答:
404 的话,就是说你的路由表里面没有对应的路由。
这里你需要看看是不是异步路由没有正确的加载。
以上是 addroutes()后正常能打开,刷新页面失效 的全部内容, 来源链接: utcz.com/p/935912.html