在网上尝试过很多方法都不可以,包括重置路由,刷新页面的时候可以,但是使用起来对于用户不太友好,后来经过努力查找,发现经过深拷贝的OK的,以此记录
文件路径 src/store/modules/permission.js
// 从lodash中引入深拷贝 import cloneDeep from "lodash.clonedeep"; //修改此函数 function filterAsyncRouter(routerMap, roles) { // 增加此行是因为如果不深拷贝,会更改原路由表,当切换用户时,会出现用户该有的菜单无法显示 let asyncRouterMap = cloneDeep(routerMap); const accessedRouters = asyncRouterMap.filter(route => { if (hasPermission(roles.permissionList, route)) { if (route.children && route.children.length) { route.children = filterAsyncRouter(route.children, roles); } return true; } return false; }); return accessedRouters; }