Component_Menu.md

February 5, 2025 · View on GitHub

下拉菜单 XNMenu

本组件是基于 Naive-UI 的 NMenu 组件二次封装的。


使用方式

更多用法请见 Demo。

Template Style:

注意:这只是个用于定义 options 属性的语法糖(会带来一定的性能损失),所以你不能用其他组件去包裹 XNMenuItemXNMenuItemGroupXNMenuDivider

<template>
  <x-n-menu>
    <x-n-menu-item key="1">Menu A</x-n-menu-item>
    <x-n-menu-item key="1">Menu B</x-n-menu-item>
    <x-n-menu-divider />
    <x-n-menu-item key="3" label="Menu C">
      <template #submenu>
        <x-n-menu-item key="3-1">Menu C1</x-n-menu-item>
        <x-n-menu-item key="3-2">Menu C2</x-n-menu-item>
      </template>
    </x-n-menu-item>
  </x-n-menu>
</template>

Scoped Slots:

<script setup>
  const options = [
    { key: '1', label: 'A' },
    { key: '2', label: 'B' },
    {
      value: '3',
      label: 'C',
      children: [
        { key: '3-1', label: 'C1' },
        { key: '3-2', label: 'C2' }
      ]
    }
  ];
</script>
<template>
  <x-n-menu :options="options">
    <template #render-label="{ option }">
      <div>{{ 'Menu ' + option.label }}</div>
    </template>
  </x-n-menu>
</template>

API

XNMenu Props:

其他 Props 略,与 NMenu 保持一致,请参考 Naive-UI 文档

XNMenu Slots:

名称参数说明版本
default菜单。仅支持 XNMenuItemXNMenuItemGroupXNMenuDivider 作为子组件0.4.0
render-label{ option, label, key }自定义菜单项的内容0.9.0
render-expand-icon{ option }自定义菜单展开图标0.9.0
render-extra{ option }自定义菜单项的额外内容0.9.0
render-icon{ option }自定义菜单项的图标0.9.0

XNMenu Methods:

其他 Methods 略,与 NMenu 保持一致,请参考 Naive-UI 文档

XNMenuItem Props:

名称类型默认值说明版本
labelstring文本内容。当使用 default 插槽时该属性无效0.4.0
extrastring额外内容。当使用 extra 插槽时该属性无效0.4.0
disabledbooleanfalse是否禁用0.4.0

XNMenuItem Slots:

名称参数说明版本
default自定义文本内容0.4.0
extra自定义额外内容0.4.0
icon自定义图标0.4.0
submenu子菜单0.7.0

XNMenuItemGroup Props:

名称类型默认值说明版本
labelstring文本内容。当使用 label 插槽时该属性无效0.9.0

XNMenuItemGroup Slots:

名称参数说明版本
default子菜单0.9.0
label自定义文本内容0.9.0