老师,您好,关于 generateMenus 方法我按照自己的逻辑写了一个,运行出来结果是和您一致的,但是我没有使用 basePath,请问下这里要处理路径的原因是什么呢?也请您帮我看一下我的代码逻辑是否存在漏洞,谢谢
export const generateMenus = (filteredRoutes) => {
const result = [ ]
filteredRoutes.forEach((item) => {
const route = {
…item,
children: [ ]
}
if (!isNull(item.meta) && isNull(item.children)) {
// 1. 存在 meta && 不存在 children: 则被认为是 最底层子节点
,需要放入 result 中
result.push(route)
} else if (!isNull(item.meta) && !isNull(item.children)) {
// 2. 存在 meta && 存在 children: 则被认为是 父节点
,需要进入 children 继续遍历
route.children.push(…generateMenus(item.children))
result.push(route)
} else if (isNull(item.meta) && !isNull(item.children)) {
// 3. 不存在 meta && 存在 children: 则被认为是 公开路由表 || 父节点不需要显示
,需要进入 children 继续遍历,但与 2
不同的是,由于父节点不需要显示,所以只需要将子节点直接放进 result
result.push(…generateMenus(item.children))
}
// 4. 不存在 meta && 不存在 children: 则被认为是 不需要处理的数据
,直接 return
})
return result
}
基于Vue3重写Vue-element-admin,打造后台前端综合解决方案
了解课程