外观
Menu 菜单
继承el-menu
原生菜单的所有属性
提示
为与router
的语义化,原生index
已被替换成path
基础用法
添加图标
支持添加el图标库图标,可接受string
,vNode
或者自定义函数返回一个图标组件
多级子菜单
如果需要多级菜单,请配置children
,内部默认处理sub-menu
分组菜单
如果需要对菜单进行分组,请配置group
,内部默认处理menu-item-group
提示
配置了groups
,子项请不要配置children
水平菜单
- 配置原生属性
mode
即可 - 配置
ellipsis
可以对溢出菜单省略
激活菜单
支持传入默认激活参数default-active
,此后内部将会自动处理激活菜单
提示
激活菜单需要启用router
模式,同时,需要全局注册vue-router
,一般情况下在main.ts
中已经注册过
配置项
Menu
需要配置menuConfig
由于menu
组件会继承el-menu
所有属性,需要时进行配置即可,以下为扩展属性:
参数 | 类型 | 说明 | 默认 | 必填 |
---|---|---|---|---|
children | MenuItemProps[] | 菜单子项 | [] | - |
path | string | 原生index | - | √ |
subMenu | object | el-sub-menu 属性 | - | - |
visible | boolean | 是否可见 | true | - |
title | string | 菜单名称 | - | √ |
group | boolean | 是否使用分组,如果配置group,子项请勿配置children | false | - |
icon | 支持el图标库图标,也可以自定义图标(自定义函数返回) | 图标 | - | - |
slots | VNode | VNode[] | 菜单插槽 | - | - |
IMenuProps 类型
typescript
/**
* menu 类型定义
*/
export interface IMenuProps extends Partial<ElMenuProps> {
/**
* 最大子菜单数,默认 3级
*/
level?: number
items: MenuItemProps[]
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
MenuItemProps
类型
typescript
/**
* menu-item类型
*/
export interface MenuItemProps extends Partial<ElMenuItemProps> {
/**
* 子菜单属性
*/
children?: MenuItemProps[]
/**
* 重写index路由路径,开启router时需要该属性
*/
path?: string
/**
* 子菜单属性
*/
subMenu?: ElSubMenuProps
/**
* 是否可见
*/
visible?: boolean
/**
* 名称
*/
title?: string
/**
* 分组
* 如果配置group,子项请勿配置children
*/
group?: boolean
/**
* 图标
*/
icon?: string | (() => VNode)
/**
* 菜单插槽
*/
slots?: () => Record<string, VNode<any, any, any> | VNode<any, any, any>[]>
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38