采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,这节我有些看不懂,需要你耐心帮我指导下。我认为generateMenus主要处理不符合规则的路由,但是1.我认为只有不存在meta.title的路由就不该存在左侧菜单,这个理解对不对?2.为啥要判断children,判断children是为了判断子类是否有meta.title吗?那父类都不挂载再菜单了,会存在子类出现在菜单列表吗
你好
title 和 icon 是成套出现的,也就是必须要有 title 同时要存在 icon
children 表示子节点,这是为了处理存在二级或者三级节点的场景
看了一下午,我终于懂了。老师你帮我看下我说的对不对。generateMenus分为三种情况:1.没有meta,没有children,直接return 2.没有meta,有children,那存在children有显示在左侧菜单的情况,所有需要再次递归调用generateMenus;3.有meta,先去处理是当前路由否符合同时存在title和icon,符合则放入result,在去处理当前路由的children export function generateMenus(routes) { const result = []; routes.forEach((item) => { // 不存在 children && 不存在 meta 直接 return if (isNull(item.meta) && isNull(item.children)) return; // 存在 children 不存在 meta,进入迭代 if (isNull(item.meta) && !isNull(item.children)) { result.push(...generateMenus(item.children)); return; } // 定义一个route对象 符合条件的route才会被放在result里 const route = { ...item, children: [] }; // 存在meta.icon&&meta.title 才符合菜单显示 if (route.meta.icon && route.meta.title) { // meta 存在生成 route 对象,放入 arr result.push(route); } if (!isNull(item.children)) { route.children.push(...generateMenus(item.children)); } }); return result; } 老师,我剔除掉同名路由的情况,这样写可以吗?我感觉同名路由出现应该算是前端自己写的bug吧
老师 可否帮我看下这个问题
你剔除掉同名父路由后,到后面的权限那里就会出问题的,我已经试过了
登录后可查看更多问答,登录/注册
基于Vue3重写Vue-element-admin,打造后台前端综合解决方案
2.4k 1
1.6k 6
4.2k 5
592 2
1.4k 2