Vue3 Element-plus和el-menu无限级菜单组件怎么封装
作者:若安舟已远
时间:2025-05-08
浏览:6
对于element中提供给我们的el-menu组件最多可以实现三层嵌套,如果多一层数据只能自己通过变量去加一层,如果加了两层、三层这种往往是行不通的,所以只能进行封装效果图一、定义数据MenuData.tsexportdefault[{id:"1",name:"第一级菜单",level:'1',child:[{id:"11",name:"第二级菜单",level:'1-1',child:[{id:"111",name:"第三级菜单",level:'1-1-1'
本文目录
对于element中提供给我们的el-menu组件最多可以实现三层嵌套,如果多一层数据只能自己通过变量去加一层,如果加了两层、三层这种往往是行不通的,所以只能进行封装

一、定义数据
MenuData.ts
export default [
{
id: "1",
name: "第一级菜单",
level: '1',
child: [
{
id: "11",
name: "第二级菜单",
level: '1-1',
child: [
{
id: "111",
name: "第三级菜单",
level: '1-1-1',
child: [
{
id: "1111",
name: "第四级菜单",
level: '1-1-1-1',
child: [
{
id: "11111",
name: "第五级菜单",
level: '1-1-1-1-1',
child: []
}
]
}
]
}]
}
]
},
{
id: "2",
name: "第一级同级菜单",
level: '2',
child: []
}
]二、封装组件
封装思想:
1.对本身组件进行循环使用,如果有子集使用本身组件 把child数据传给自己
2.如果没有子集 使用 el-menu-item
以下代码对setup( )函数和setup语法糖分别做了实现
setup语法糖
0"> {{ generateSpaces(item.level) }} {{ item.name }} {{ generateSpaces(item.level) }} {{ item.name }}
setup函数
0"> {{ generateSpaces(item.level) }} {{ item.name }} {{ generateSpaces(item.level) }} {{ item.name }}
type就不补充了 可根据自己项目定义,可临时改成any
三、使用组件
补充default-active变量,如果一开始想默认点开第一层的数据 就需要找规律啦
拿到所有的level,通过接口方式返给你 自己平铺拿到所有的level也好
例如数据格式:
let arr = [ "1-1", "1-1-1", "1-1-1-1", "1-1-1-2", "1-1-1-3", "1-1-1-4", "1-1-1-5", "1-1-1-6", "1-1-2", "1-1-2-1" ]
想要的结果就是 最长且相同数字最多的元素 1-1-1-1
arr.sort((a,b)=> b.split('-').length - a.split('-').length)[0]使用split防止有些字符串是10、11 两位数字的
作者最新文章
Mac电脑怎么截图:Command+Shift组合键用法与保存位置
2026-10-16 17:07
漫蛙漫画网页下载安装包
2026-10-13 13:19
WPS 表格单元格内换行快捷键是什么
2026-10-10 15:48
Word格式转换成PDF?Word转PDF的具体步骤是什么?
2026-09-02 19:14
浏览器保存网页为PDF的实用技巧
2026-08-28 11:44
上一篇:
qq空间设置手机型号的方法介绍
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多



























