addroutes()后正常能打开,刷新页面失效

Neoo1984
  • 53

用的是@花裤衩 的后台框架

  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)

  1. 初次进来的时候vuex中没有role,所以去取出sessionstorage的role,此时页面正常挂载了动态路由
  2. 刷新页面的时候,vuex丢失,进入else,去取sessionstorage,为什么此时通过打印发现,先进了else,addroutes()也执行了,但是又进了if,并且页面进了404 ?
回复
阅读 327
1 个回答
✓ 已被采纳

404 的话,就是说你的路由表里面没有对应的路由。

这里你需要看看是不是异步路由没有正确的加载。

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

宣传栏