shadcn-vue Dropdown Menu 组件完整指南:安装、API 与实战示例

发布时间:2026/9/24 14:41:23

shadcn-vue Dropdown Menu 组件完整指南:安装、API 与实战示例 UI组件前端【免费下载链接】shadcn-vueVue port of shadcn-ui项目地址https://gitcode.com/gh_mirrors/sh/shadcn-vue点击查看免费下载本指南围绕 shadcn-vue 中的 Dropdown Menu下拉菜单组件展开它是通过按钮等触发器向用户展示一组操作或功能的菜单组件。文章以官方文档dropdown-menu.md为骨架结合当前仓库apps/v4中基于 Reka UI 的实现源码与全部示例帮助你在 Vue 3 TypeScript 项目中完成组件的安装、基础使用以及 Checkbox、Radio Group、子菜单、快捷键、禁用态等完整场景的落地。组件概述Dropdown Menu 用于在按钮触发下向用户展示一个菜单菜单内通常包含一组动作或功能项。它是 shadcn-vue 组件库中交互最频繁、组合最灵活的组件之一广泛用于用户头像菜单、表格行操作、工具栏下拉、筛选条件选择等场景。该组件的实现以Reka UIshadcn-vue 的底层无头组件库为基础当前仓库在apps/v4/registry/bases/reka/ui/dropdown-menu/下提供了完整封装共包含 14 个组合部件部件说明DropdownMenu根容器管理打开状态与上下文DropdownMenuTrigger触发器点击后展开菜单DropdownMenuContent弹出的菜单内容面板DropdownMenuItem单个菜单项DropdownMenuCheckboxItem带复选框的菜单项DropdownMenuRadioGroup单选组容器DropdownMenuRadioItem单选菜单项DropdownMenuLabel分组标签DropdownMenuSeparator分隔线DropdownMenuGroup菜单项分组DropdownMenuShortcut快捷键提示文本DropdownMenuSub子菜单根容器DropdownMenuSubTrigger子菜单触发器DropdownMenuSubContent子菜单面板此外在用法中还会配合 Reka UI 提供的DropdownMenuPortal将内容渲染到 body使用。仓库同时维护了new-york-v4风格的同名组件集见 apps/v4/registry/new-york-v4/ui/dropdown-menu两套实现 API 一致可按项目风格选择。安装在项目根目录执行 shadcn-vue CLI 命令即可将 dropdown-menu 组件添加到项目中npx shadcn-vuelatest add dropdown-menu命令会在项目中生成components/ui/dropdown-menu/目录及上述全部部件文件。需要说明的是安装生成的代码结构与本仓库 apps/v4/registry/bases/reka/ui/dropdown-menu 下的实现一致均直接依赖reka-ui与vueuse/core。基础用法官方文档给出的最小可用示例——一个包含标签、分隔线与若干菜单项的账户菜单script setup langts import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from /components/ui/dropdown-menu /script template DropdownMenu DropdownMenuTriggerOpen/DropdownMenuTrigger DropdownMenuContent DropdownMenuLabelMy Account/DropdownMenuLabel DropdownMenuSeparator / DropdownMenuItemProfile/DropdownMenuItem DropdownMenuItemBilling/DropdownMenuItem DropdownMenuItemTeam/DropdownMenuItem DropdownMenuItemSubscription/DropdownMenuItem /DropdownMenuContent /DropdownMenu /template其中/components/ui/dropdown-menu是 CLI 安装后组件的默认导入路径。若需把按钮作为触发器可给DropdownMenuTrigger传as-child如:as-childtrue并嵌套Button实现点击按钮弹出菜单的常见形态——仓库中的演示组件 DropdownMenuDemo.vue 正是这样组合使用的。默认外观与对齐参数从 DropdownMenuContent.vue 的源码可以看到两个内置默认值const props withDefaults( definePropsDropdownMenuContentProps { class?: HTMLAttributes[class] }(), { align: start, // 与触发器左对齐 sideOffset: 4, // 距触发器 4px }, )即菜单面板默认左对齐、与触发器保持 4px 间距这些属性均可按需覆盖例如对齐到触发器末端使用alignend。面板样式通过cn()合并 Tailwind 类实现cn 工具其中使用--reka-dropdown-menu-content-available-height、--reka-dropdown-menu-trigger-width、--reka-dropdown-menu-content-transform-origin等 CSS 变量来控制高度、宽度与变换原点并借助data-[stateclosed]状态选择器在关闭时隐藏溢出内容。核心部件实现解析以 DropdownMenu.vue 为代表的封装遵循统一的薄封装模式通过defineProps/defineEmits透传 Reka UI 的 props 与事件再用useForwardPropsEmits或useForwardProps转发给底层组件script setup langts import type { DropdownMenuRootEmits, DropdownMenuRootProps } from reka-ui import { DropdownMenuRoot, useForwardPropsEmits } from reka-ui const props definePropsDropdownMenuRootProps() const emits defineEmitsDropdownMenuRootEmits() const forwarded useForwardPropsEmits(props, emits) /script template DropdownMenuRoot v-slotslotProps>script setup langts import { ref } from vue import { Button } from /components/ui/button import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuTrigger, } from /components/ui/dropdown-menu const showStatusBar ref(true) const showActivityBar ref(false) const showPanel ref(false) /script template DropdownMenu DropdownMenuTrigger :as-childtrue Button variantoutlineCheckboxes/Button /DropdownMenuTrigger DropdownMenuContent classmin-w-40 DropdownMenuGroup DropdownMenuLabelAppearance/DropdownMenuLabel DropdownMenuCheckboxItem v-model:checkedshowStatusBar Status Bar /DropdownMenuCheckboxItem DropdownMenuCheckboxItem v-model:checkedshowActivityBar disabled Activity Bar /DropdownMenuCheckboxItem DropdownMenuCheckboxItem v-model:checkedshowPanel Panel /DropdownMenuCheckboxItem /DropdownMenuGroup /DropdownMenuContent /DropdownMenu /template要点DropdownMenuCheckboxItem通过v-model:checked双向绑定布尔值天然适合开关类偏好设置传入disabled即可禁用该项如上面示例中的 Activity Bar从 DropdownMenuCheckboxItem.vue 源码可见勾选指示图标由DropdownMenuItemIndicator包裹默认渲染为多图标库占位组件IconPlaceholder同时声明了 lucide、tabler、hugeicons、phosphor、remixicon 五套图标名也支持通过indicator-icon插槽替换为自定义图标。示例二Radio Group 菜单项当需要在若干互斥选项中单选时使用DropdownMenuRadioGroupDropdownMenuRadioItem。以下代码取自仓库示例 DropdownMenuWithRadio.vuescript setup langts import { ref } from vue import { Button } from /components/ui/button import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, } from /components/ui/dropdown-menu const position ref(bottom) /script template DropdownMenu DropdownMenuTrigger :as-childtrue Button variantoutlineRadio Group/Button /DropdownMenuTrigger DropdownMenuContent DropdownMenuGroup DropdownMenuLabelPanel Position/DropdownMenuLabel DropdownMenuRadioGroup v-modelposition DropdownMenuRadioItem valuetopTop/DropdownMenuRadioItem DropdownMenuRadioItem valuebottomBottom/DropdownMenuRadioItem DropdownMenuRadioItem valueright disabledRight/DropdownMenuRadioItem /DropdownMenuRadioGroup /DropdownMenuGroup /DropdownMenuContent /DropdownMenu /template要点DropdownMenuRadioGroup通过v-model绑定当前选中值DropdownMenuRadioItem的value即为可选项取值选中项会由DropdownMenuItemIndicator渲染指示图标与 Checkbox 共用一个 indicator 插槽机制见 DropdownMenuRadioItem.vue单选组非常适合菜单内切换视图/排序方式等场景。更多实战形态来自仓库示例仓库在 apps/v4/registry/bases/reka/examples/dropdown-menu 目录下提供了十余个可直接借鉴的完整示例覆盖常见进阶需求子菜单SubmenuDropdownMenuWithSubmenu.vue 演示DropdownMenuSubDropdownMenuSubTriggerDropdownMenuSubContent的嵌套菜单。从 DropdownMenuSubTrigger.vue 源码可见触发器右侧默认渲染右箭头图标ChevronRightIcon等并带有cn-rtl-flip类以适配 RTL 布局时自动镜像DropdownMenuSubContent.vue 通过--reka-dropdown-menu-content-available-width限制最大宽度并处理溢出。快捷键提示配合DropdownMenuShortcut展示⇧⌘P、⌘B等按键提示文本见 DropdownMenuShortcut.vue本质是一个带dropdown-menu-shortcut标识的span。带图标菜单项DropdownMenuWithIcons.vue、DropdownMenuWithCheckboxesIcons.vue 等展示了在菜单项内嵌图标排版。危险操作项给DropdownMenuItem传variantdestructive获得强调危险语义的样式DropdownMenuWithDestructive.vue。头像菜单DropdownMenuWithAvatar.vue 展示头像 用户信息 操作项的典型账户菜单布局。对话框内使用DropdownMenuInDialog.vue 说明菜单嵌套在 Dialog 中的写法。综合示例DropdownMenuDemo.vue 组合了标签、分组、子菜单、快捷键、禁用项与分隔线是最接近真实业务的完整范式。无障碍与键盘交互由于底层使用 Reka UI 的无头组件实现Dropdown Menu 继承了完整的 WAI-ARIA 语义与键盘支持此类行为由底层库保证可在 Reka UI 的 dropdown-menu 文档中核对细节。结合仓库封装的data-slot与data-disabled属性建议在使用时注意菜单项通过disabled禁用后会自动移除指针事件并降低透明度无需手动处理焦点子菜单触发器内建右箭头指示图标视觉与键盘导航语义一致根组件DropdownMenu的插槽会透出 Reka UI 的上下文属性如打开状态可用于自定义触发器外观或打开时高亮等状态样式。小结shadcn-vue 的 Dropdown Menu 以薄封装 Reka UI Tailwind 样式的方式交付安装一条命令、组合 14 个部件即可覆盖从基础菜单到多选、单选、子菜单、快捷键、危险操作等全部常见交互。官方文档dropdown-menu.md提供了安装命令、基础用法与 Checkbox / Radio Group 两个核心示例仓库中的 ui/dropdown-menu 源码展示了 props 透传、reactiveOmit自定义属性剥离、data-slot标识与多图标库占位等工程化细节而 examples/dropdown-menu 目录则为不同业务形态提供了可直接复用的模板。赞分享UI组件前端【免费下载链接】shadcn-vueVue port of shadcn-ui项目地址https://gitcode.com/gh_mirrors/sh/shadcn-vue点击查看免费下载相关推荐shadcn-vue Context Menu 组件完整指南从安装到源码级解析shadcn vue Context Menu 组件完整指南从安装到源码级解析 本文围绕 shadcn vueVue 版 shadcn ui中的 ContUI组件前端Haystack 实验性 LLMSummarizer 组件详解基于 LLM 的分块摘要与参数调优指南Haystack 实验性 LLMSummarizer 组件详解基于 LLM 的分块摘要与参数调优指南 Haystack 提供了一套实验性组件 haystackUI组件前端Neon 跨团队 CPU 与内存性能剖析基于 pprof 的统一 Profile 方案Rust / Go / CNeon 跨团队 CPU 与内存性能剖析基于 pprof 的统一 Profile 方案Rust / Go / C 本文基于 Neon 仓库中的设计文档 dUI组件前端上一篇10分钟掌握C STL代码生成微软官方库实战指南下一篇History.js与TypeScript类型定义与类型安全创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/24 15:46:31

医院陪诊陪护,陪诊系统,陪诊APP落地指南:三端协同+源码解析

就医流程繁琐、老人独自看病、异地就医难等问题,带动陪诊陪护行业快速发展。医院陪诊陪护管理系统,依托小程序、APP实现患者、陪诊人员、平台后台三方联动,解决陪诊人员管理混乱、派单效率低、费用结算不清、服务过程不可监管等行业痛点。本文…

2026/9/24 15:46:31

姜炒鸡做法全解:一份可被 RAG 系统检索的湖南家常菜谱

教程人工智能大模型RAG 【免费下载链接】all-in-rag 🔍大模型应用开发实战一:RAG 技术全栈指南,在线阅读地址:https://datawhalechina.github.io/all-in-rag/ 项目地址: https://gitcode.com/datawhalechina/all-in-ra…

2026/9/24 15:41:31

SMBUS实战:bq4050地址解析与硬件I2C库避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/23 12:07:00

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/24 0:00:21

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:21

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:21

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码