问题描述:登录普通账号;退出登录;登录管理员账号;主界面侧边栏看到的还是普通用户的功能列表;
期望:能看到管理员的功能列表;
问题原因:动态加载菜单的时候,过滤菜单时修改了基础菜单集合数据,用的是浅拷贝。
解决方案:改为深拷贝,可用序列号和解析来简单实现
问题跟进:改为深拷贝会引入新的问题,加载子菜单组件失败
新问题-解决方案:退出时,强制刷新整个界面
async logout() { await this.$store.dispatch('user/logout') window.location.reload(true);//强制刷新整个界面 }
GenerateRoutes({commit},data){
return new Promise(resolve => {
const {sysRole,roles} = data;
//let asyncRouterMapCopy = asyncRouterMap;//此处时问题所在,浅拷贝,
//asyncRouterMapCopy.filter()方法将减少asyncRouterMap的数据
let asyncRouterMapCopy = JSON.parse( JSON.stringify(asyncRouterMap));//深拷贝
const accessedRouters = asyncRouterMapCopy.filter(v => {
if(hasPermissioin(sysRole,roles,v)){
if(v.children && v.children.length >