Skip to content

ContextMenu

右键菜单

基础用法

View Source
vue
<script setup lang="ts">
import { ref } from 'vue'
import { ElMessage } from 'element-plus'

const data = [
  { label: 'test1', icon: 'ep:plus' },
  { label: 'test2', icon: 'ep:plus' },
  {
    label: 'test3',
    icon: 'ep:plus',
    children: [
      { label: 'test3-1', icon: 'ep:plus' },
      {
        label: 'test3-2',
        icon: 'ep:plus',
        children: [
          { label: 'test3-2-1', icon: 'ep:plus' },
        ],
      },
    ],
  },
]

const triggerRef = ref()

function onSelect(item: any) {
  ElMessage.success(`点击了${item.label}`)
}
</script>

<template>
  <el-button ref="triggerRef">
    点击右键触发
  </el-button>

  <ContextMenu :data="data" :trigger-ref="triggerRef" @select="onSelect" />
</template>

属性

名称说明类型可选值默认值
v-model控制右键菜单的显示boolean--
x右键菜单的定位number | string--
y右键菜单的定位number | string--
data菜单列表ContextMenuItem--
triggerRef触发右键菜单的元素HTMLElement--

事件

事件名说明回调参数
select选择菜单项时触发当前点击的菜单项

类型定义

ts
export interface ContextMenuItem {
  label?: string
  icon?: string
  children?: ContextMenuItem[]
  [x: string]: any
}

export interface ContextMenuProps {
  modelValue?: boolean
  data?: ContextMenuItem[]
  triggerRef?: HTMLElement
  x?: number | string
  y?: number | string
}

export type ContextMenuEmits = {
  select: [item: ContextMenuItem]
} & object