Skip to content
On this page

菜单

菜单组件是对 Element Plus 的菜单组件 进行二次封装成 JSON 配置模式,除了支持 Element Plus 的 菜单基本功能之外还扩展了其他功能:

文件说明

  • 组件地址:components/Menu/src/BasicMenu.vueMenuItem.vue

  • 组件类型:components/Menu/types.ts

组件类型
// el-menu 配置对象参数
interface MenuType {
  attr?: Recordable;    // el-menu 属性
  event?: Recordable; // el-menu 事件
  ref?: Ref<T>; // el-menu 引用
  menu: Array<MenuItemType>;  // el-menu-item 子节点配置
  component?: CompType; // 默认插槽组件
}
// el-menu-item 子节点配置
interface MenuItemType {
  attr?: Recordable; // 属性
  event?: Recordable; // 事件
  subMenu?: Array<MenuItemType>; // 子节点
  icon?: IconType; // 图标
  title?: string; // 菜单文本
  component?: CompType; // 默认插槽组件
}

特性

采用了递归的方法,可以依据渲染数据对象进行循环渲染

参数json格式

<menuOption> ={
  attr: { }, // el-menu的属性对象
  event: { }, // el-menu的事件对象
  ref: ref(), // el-menu组件的实例对象
  menu: [
    // el-menu-item
    {
      attr: {}, // el-menu-item的属性对象
      event: {}, // el-menu-item的事件对象
      icon: {
        name: Document, // 图标对象
      },
      title: "导航一", // 菜单项文本内容
    },
    // el-sub-menu
    {
      attr: { }, // el-menu-item的属性对象
      event: {  }, // el-menu-item的事件对象
      icon: {
        name: Setting, // 图标名
      },
      title: "导航三", // 菜单项文本内容
      subMenu: [
        // 2
        // el-menu-item
        {
          attr: {   },
          icon: {
            name: Location,
          },
          title: "导航 3-1 ",
        },
        // el-sub-menu
        {
          attr: {  },
          icon: {
            name: Setting,
          },
          title: "导航 3-2 ",
          subMenu: [
            // 3
            // el-menu-item
            {
              attr: {  },
              event: {},
              icon: {
                name: Setting,
              },
              title: "导航 3-2-1 ",
            },
          ], // 3
        },
      ], // 2
    }, // *
  ],
};

参数说明

属性名说明类型默认值
attrel-menu的属性对象,值为element-plusel-menu 的属性以及 HTML 属性Record<String, any>-
eventel-menu的事件对象,值为element-plusel-menu 的事件以及 HTML事件Record<String, any>-
refel-menu组件的实例对象Ref<T>-
menu菜单项数组Array<MenuItemType>-
component默认插槽组件CompType
collapse折叠配置项
属性名说明类型默认值
attrel-menu-item的属性对象,值为element-plusel-menu-item 的属性以及 HTML属性Record<String, any>-
eventel-menu-item的事件对象,值为element-plusel-menu-item 的事件以及 HTML事件Record<String, any>-
subMenuel-sub-menuel-menu-item数组Array<MenuItemType>-
icon菜单项的前缀图标IconType-
text菜单项的文本内容String-
component默认插槽组件CompType

collapse

collapse 为侧边栏菜单折叠配置,该配置为对象,包含如下配置:

属性名说明类型默认值
type折叠图标配置(当type 为 component 时,传入 BasicComponent 组件相关配置)Icon 或 ComponentIcon
showIcon展开图标(当 type = Icon 时有效)
colseIcon关闭图标(当 type = Icon 时有效)
size图标大小Number30
opendWidth打开侧边栏宽度Number260
closeWidth关闭侧边栏宽度60

方法

方法名说明参数
open展开指定的 sub-menuindex: 需要打开的 sub-menu 的 index
close收起指定的 sub-menuindex: 需要收起的 sub-menu 的 index

插槽

插槽名称说明
header顶部或左侧 header
footer底部或右侧footer

示例

侧边栏菜单

</>

水平菜单

</>

</>

sewen-ui design by Sewen