在网上尝试过很多方法都不可以,包括重置路由,刷新页面的时候可以,但是使用起来对于用户不太友好,后来经过努力查找,发现经过深拷贝的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; }
如果您认为这篇文章还不错或者有所收获,您可以点击文章下面的【推荐】按钮精神支持,因为这种支持是我继续写作,分享的最大动力!
作者:月下舞之蝶影
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!