v-contextmenu
v-contextmenu - npm (npmjs.com)
npm i v-contextmenu@3.1.1 --save-dev
npm install --save vue-runtime-helpers
# main.ts
import contentmenu from 'v-contextmenu'
import "v-contextmenu/dist/themes/bright.css";
# myTree.vue
<template>
<div class="wrap" v-contextmenu:contextmenu>
<v-contextmenu ref="contextmenu" theme="default">
<v-contextmenu-item>GitHub</v-contextmenu-item>
<v-contextmenu-item>GitLab</v-contextmenu-item>
<v-contextmenu-submenu title="蔬菜菜">
<v-contextmenu-item>土豆</v-contextmenu-item>
<v-contextmenu-submenu title="青菜">
<v-contextmenu-item>小油菜</v-contextmenu-item>
<v-contextmenu-item>空心菜</v-contextmenu-item>
</v-contextmenu-submenu>
<v-contextmenu-item>黄瓜</v-contextmenu-item>
</v-contextmenu-submenu>
<v-contextmenu-item disabled>菠萝蜜</v-contextmenu-item>
<v-contextmenu-divider />
<v-contextmenu-item>哈密瓜</v-contextmenu-item>
<v-contextmenu-item @click="handleUserManagement">
<StepBackwardOutlined />
<span>用户管理</span>
</v-contextmenu-item>
</v-contextmenu>
</div>
</template>
<script lang="ts" setup>
import {
StepBackwardOutlined,
} from '@ant-design/icons-vue';
import {message} from 'ant-design-vue';
const handleUserManagement = () => {
message.success('用户管理');
};
</script>
<style scoped>
.wrap {
display: flex;
justify-content: center;
align-items: center;
width: 300px;
height: 200px;
border: 3px dashed rgba(90, 167, 164, 0.9);
border-radius: 8px;
background-color: rgba(90, 167, 164, 0.2);
}
</style>
参考:
https://juejin.cn/post/7263042106440695865?from=search-suggest
https://juejin.cn/post/7250513276236267557?from=search-suggest
https://juejin.cn/post/7001837920772423716?from=search-suggest牛
http://ashuai.work:8888/#/selectDown牛
https://segmentfault.com/a/1190000043003687
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?