vue递归element中的NavMenu
父组件
<template>
<div>
<el-menu
:default-active="activeIndex2"
class="el-menu-demo"
mode="horizontal"
@select="handleSelect"
background-color="#545c64"
text-color="#fff"
active-text-color="#ffd04b"
style="width: 100%; display: inline-flex"
>
<submenu-item
v-for="(route, index) in listNave"
:key="route.name + index"
:item="route"
:base-path="route.name"
></submenu-item>
</el-menu>
</div>
</template>
<script>
import submenuItem from "./submenuItem";
export default {
components: { submenuItem },
data() {
return {
activeIndex: "1",
activeIndex2: "处理中心",
listNave: [
{ name: "处理中心" },
{
name: "我的工作台",
children: [
{ name: "选项1" },
{ name: "选项2" },
{ name: "选项3" },
{
name: "选项4",
children: [
{ name: "选项1" },
{ name: "选项2" },
{ name: "选项3" },
],
},
],
},
{ name: "消息中心" },
{ name: "订单管理" },
],
};
},
methods: {
handleSelect(key, keyPath) {
console.log(key, keyPath);
},
},
};
</script>
子组件
<template>
<div>
<template v-if="!item.children">
<el-menu-item :index="item.name">
{{ item.name }}
</el-menu-item>
</template>
<el-submenu :index="item.name" v-else>
<template slot="title">
{{ item.name }}
</template>
<submenu-item
v-for="(v, i) in item.children"
:key="v.name + i"
:item="v"
:base-path="v.name"
/>
</el-submenu>
</div>
</template>
<script>
export default {
name: "submenuItem",
data() {
return {};
},
props: {
item: {
typeof: Object,
default: () => {},
},
// base-path 传参数多余的东西
basePath: {
type: String,
default: "",
},
},
};
</script>