Skip to content

Dropdown 下拉菜单

用于承载多项操作的下拉列表。

基础用法

传入 menuOptions 作为菜单数据源,通过 select 事件获取用户选择的菜单项。

基础用法
Dropdown 组件的基础用法
<script setup lang="ts">
import { ref } from 'vue'
import Button from '@/components/Button/Button.vue'
import Dropdown from '@/components/Dropdown/Dropdown.vue'
import type { menuOption } from '@/components/Dropdown/types'

const options = ref<menuOption[]>([
  { label: '查看', key: 'view' },
  { label: '编辑', key: 'edit' },
  { label: '删除', key: 'delete', divided: true },
])

const handleSelect = (item: menuOption) => {
  console.log('select', item)
}
</script>

<template>
  <Dropdown :menu-options="options" trigger="click" :close-delay="100" @select="handleSelect">
    <Button type="primary">下拉菜单</Button>
  </Dropdown>
</template>

手动控制

设置 manual 后,可通过组件实例的 show/hide 方法控制显示与隐藏。

手动控制
Dropdown manual 与 exposed 方法
<script setup lang="ts">
import { ref } from 'vue'
import Button from '@/components/Button/Button.vue'
import Dropdown from '@/components/Dropdown/Dropdown.vue'
import type { menuOption, DropdownInstance } from '@/components/Dropdown/types'

const dropdownRef = ref<DropdownInstance | null>(null)
const options = ref<menuOption[]>([
  { label: '复制链接', key: 'copy' },
  { label: '重命名', key: 'rename' },
  { label: '删除', key: 'delete', divided: true },
])

const handleSelect = (item: menuOption) => {
  console.log('select', item)
}
</script>

<template>
  <Button @click="dropdownRef?.show()">打开菜单</Button>
  <Button plain @click="dropdownRef?.hide()">关闭菜单</Button>

  <Dropdown
    ref="dropdownRef"
    manual
    :hide-after-click="false"
    :menu-options="options"
    @select="handleSelect"
  >
    <Button type="primary">手动控制 Dropdown</Button>
  </Dropdown>
</template>

API

继承 Tooltip 的全部属性,另外支持:

参数说明类型默认值
menuOptions下拉菜单选项列表menuOption[][]
hideAfterClick选择后是否自动收起booleantrue

Tooltip 继承属性:triggerplacementmanualopenDelaycloseDelaytransitionpopperOptions

menuOption 结构:

参数说明类型默认值
label文本或自定义节点string | VNode-
key唯一标识string | number-
disabled是否禁用booleanfalse
divided是否展示分割线booleanfalse
事件名说明回调参数
visible-change下拉菜单显示状态变化(visible: boolean)
select选中菜单项时触发(option: menuOption)
方法名说明签名
show手动显示菜单() => void
hide手动隐藏菜单() => void