refactor: ♻️ 兼容路由数据无子级时children=[]的情况
This commit is contained in:
@@ -3,12 +3,15 @@
|
|||||||
<!--【叶子节点】显示叶子节点或唯一子节点且父节点未配置始终显示 -->
|
<!--【叶子节点】显示叶子节点或唯一子节点且父节点未配置始终显示 -->
|
||||||
<template
|
<template
|
||||||
v-if="
|
v-if="
|
||||||
// 判断条件:仅有一个子节点,且父节点未配置始终显示
|
// 未配置始终显示,使用唯一子节点替换父节点显示为叶子节点
|
||||||
(hasOneShowingChild(item.children, item) &&
|
(!item.meta?.alwaysShow &&
|
||||||
(!onlyOneChild.children || onlyOneChild.noShowingChildren) &&
|
hasOneShowingChild(item.children, item) &&
|
||||||
!item.meta?.alwaysShow) ||
|
(!onlyOneChild.children ||
|
||||||
// 父节点即使配置了始终显示,但无子节点,也显示为叶子节点
|
onlyOneChild.children.filter((child: any) => !child.meta?.hidden).length === 0 ||
|
||||||
(item.meta?.alwaysShow && !item.children)
|
onlyOneChild.noShowingChildren)) ||
|
||||||
|
// 即使配置了始终显示,但无子节点,也显示为叶子节点
|
||||||
|
(item.meta?.alwaysShow &&
|
||||||
|
(!item.children || item.children.filter((child) => !child.meta?.hidden).length === 0))
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<AppLink
|
<AppLink
|
||||||
@@ -104,13 +107,14 @@ function hasOneShowingChild(children: RouteRecordRaw[] = [], parent: RouteRecord
|
|||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 仅有一个或无子节点
|
// 仅有一个节点
|
||||||
if (showingChildren.length === 1) {
|
if (showingChildren.length === 1) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 无子节点时,设置父节点为唯一显示节点
|
// 无子节点时
|
||||||
if (showingChildren.length === 0) {
|
if (showingChildren.length === 0) {
|
||||||
|
// 父节点设置为唯一显示节点,并标记为无子节点
|
||||||
onlyOneChild.value = { ...parent, path: "", noShowingChildren: true };
|
onlyOneChild.value = { ...parent, path: "", noShowingChildren: true };
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user