generateMenus方法

来源:4-14 业务落地:解析路由表,获取结构化数据

Miiko

2024-03-08

老师,您好,关于 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
}

写回答

1回答

Sunday

2024-03-09

你好

basePath 主要为了处理路径合并的问题。

比如这样的路由

{

path: '/user',

children: [

{

    path: '/manage'

}

]

}

0
0

基于Vue3新标准,打造后台综合解决方案

基于Vue3重写Vue-element-admin,打造后台前端综合解决方案

1942 学习 · 1688 问题

查看课程