Skip to content

Commit 8029c07

Browse files
AimWhyPanJiaChen
authored andcommitted
perf[Sidebar]: optimize code logic (#1349)
1 parent d45e805 commit 8029c07

File tree

1 file changed

+11
-22
lines changed

1 file changed

+11
-22
lines changed

src/views/layout/components/Sidebar/SidebarItem.vue

+11-22
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,25 @@
11
<template>
2-
<div v-if="!item.hidden&&item.children" class="menu-wrapper">
2+
<div v-if="!item.hidden" class="menu-wrapper">
33

44
<template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
55
<app-link :to="resolvePath(onlyOneChild.path)">
66
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
7-
<item v-if="onlyOneChild.meta" :icon="onlyOneChild.meta.icon||item.meta.icon" :title="generateTitle(onlyOneChild.meta.title)" />
7+
<item v-if="onlyOneChild.meta" :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="generateTitle(onlyOneChild.meta.title)" />
88
</el-menu-item>
99
</app-link>
1010
</template>
1111

1212
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)">
1313
<template slot="title">
14-
<item v-if="item.meta" :icon="item.meta.icon" :title="generateTitle(item.meta.title)" />
15-
</template>
16-
17-
<template v-for="child in item.children">
18-
<template v-if="!child.hidden">
19-
<sidebar-item
20-
v-if="child.children&&child.children.length>0"
21-
:is-nest="true"
22-
:item="child"
23-
:key="child.path"
24-
:base-path="resolvePath(child.path)"
25-
class="nest-menu" />
26-
27-
<app-link v-else :to="resolvePath(child.path)" :key="child.name">
28-
<el-menu-item :index="resolvePath(child.path)">
29-
<item v-if="child.meta" :icon="child.meta.icon" :title="generateTitle(child.meta.title)" />
30-
</el-menu-item>
31-
</app-link>
32-
</template>
14+
<item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="generateTitle(item.meta.title)" />
3315
</template>
16+
<sidebar-item
17+
v-for="child in item.children"
18+
:is-nest="true"
19+
:item="child"
20+
:key="child.path"
21+
:base-path="resolvePath(child.path)"
22+
class="nest-menu" />
3423
</el-submenu>
3524

3625
</div>
@@ -70,7 +59,7 @@ export default {
7059
return {}
7160
},
7261
methods: {
73-
hasOneShowingChild(children, parent) {
62+
hasOneShowingChild(children = [], parent) {
7463
const showingChildren = children.filter(item => {
7564
if (item.hidden) {
7665
return false

0 commit comments

Comments
 (0)