情景:

vue 点击退出登录后,再次点击登录。

问题:

Vue-router跳转界面后,url变化,但页面空白,要刷新之后才会显示新页面

代码:

logout({ commit, state, dispatch }) {
    return new Promise((resolve, reject) => {
      logout({
        username: state.name
      }).then(() => {
        removeName()
        resetRouter()
        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  },

解决:

// resetRouter() 方法
export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

在退出登录时,使用 resetRouter() 方法重置了路由,导致跳转空白。

在不需要权限控制的场景下把这个方法注掉即可。

logout({ commit, state, dispatch }) {
    return new Promise((resolve, reject) => {
      logout({
        username: state.name
      }).then(() => {
        removeName()
        // resetRouter()
        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  },
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐