在Element UI中创建一个递归的el-menu
组件,可以通过组件自调用的方式来实现。以下是一个简单的递归菜单组件的示例代码:
<template>
<el-menu :unique-opened="true" :collapse="isCollapse" :collapse-transition="false">
<recursive-menu :menuData="menuData" />
</el-menu>
</template>
<script>
export default {
data() {
return {
isCollapse: false,
menuData: [
{
id: 1,
title: 'Menu 1',
children: [
{ id: 2, title: 'Submenu 1-1', children: [] },
{ id: 3, title: 'Submenu 1-2', children: [] }
]
},
{
id: 4,
title: 'Menu 2',
children: [
{ id: 5, title: 'Submenu 2-1', children: [] }
]
}
]
};
},
components: {
'recursive-menu': {
name: 'RecursiveMenu',
props: ['menuData'],
template: `
<div>
<el-submenu v-for="item in menuData" :index="item.id" :key="item.id">
<template slot="title">{{ item.title }}</template>
<recursive-menu v-if="item.children && item.children.length > 0" :menuData="item.children" />
</el-submenu>
</div>
`
}
}
};
</script>
在这个示例中,我们定义了一个名为RecursiveMenu
的组件,该组件接受一个menuData
属性,这个属性是一个嵌套的菜单数据结构。组件内部通过v-for
指令遍历menuData
,并为每个顶级菜单项创建一个el-submenu
。如果该项有子菜单,它将递归地调用自身,并传递子菜单数据给menuData
属性。这样就形成了一个递归组件,可以无限递归地构建多级菜单。