在 Vue 3 中使用 @vueuse/context-menu
:
- 安装库:
npm install @vueuse/core @vueuse/context-menu
或者使用yarn:
yarn add @vueuse/core @vueuse/context-menu
- 在你的组件中导入和使用它:
<template> <div> <div :ref="refElement">Right click me</div> <ContextMenu v-if="showContextMenu" :position="position" @close="showContextMenu = false"> <li @click="handleClick('option 1')">Option 1</li> <li @click="handleClick('option 2')">Option 2</li> </ContextMenu> </div> </template> <script> import { ref, reactive } from 'vue' import { useClickAway, useContextMenu } from '@vueuse/core' import ContextMenu from '@vueuse/context-menu' export default { components: { ContextMenu }, setup() { const refElement = ref(null) const position = reactive({ x: 0, y: 0 }) const showContextMenu = ref(false) useContextMenu(refElement, (event) => { event.preventDefault() position.x = event.x position.y = event.y showContextMenu.value = true }) useClickAway(refElement, () => { showContextMenu.value = false }) const handleClick = (option) => { console.log(option) showContextMenu.value = false } return { refElement, position, showContextMenu, handleClick } } } </script>
这里,我们创建一个新的 div 元素,当你在这个元素上右键点击时,会出现一个上下文菜单。当你点击其他地方时,上下文菜单会消失。如果你点击菜单项,将在控制台打印菜单项名称,并关闭上下文菜单。