DropdownMenu.tsx

DropdownMenu.tsx

基本信息

  • 类型: React 组件 (shadcn/ui)
  • 路径: ./src/components/ui/dropdown-menu.tsx

功能描述

下拉菜单组件,用于显示一组操作选项。支持嵌套子菜单、复选框项、单选组、快捷键提示等功能。

导出内容

  • DropdownMenu - 菜单根组件
  • DropdownMenuPortal - 门户
  • DropdownMenuTrigger - 触发器
  • DropdownMenuContent - 菜单内容
  • DropdownMenuGroup - 分组
  • DropdownMenuItem - 菜单项
  • DropdownMenuCheckboxItem - 复选框菜单项
  • DropdownMenuRadioGroup - 单选组
  • DropdownMenuRadioItem - 单选菜单项
  • DropdownMenuLabel - 标签
  • DropdownMenuSeparator - 分隔线
  • DropdownMenuShortcut - 快捷键提示
  • DropdownMenuSub - 子菜单
  • DropdownMenuSubTrigger - 子菜单触发器
  • DropdownMenuSubContent - 子菜单内容

Props 接口

属性类型必填默认值说明
sideOffsetnumber4与触发器的距离
classNamestring-自定义CSS类名
...propsReact.ComponentProps<typeof DropdownMenuPrimitive.Content>-Content属性
属性类型必填默认值说明
insetboolean-是否缩进
variant`'default' \'destructive'`'default'变体样式
classNamestring-自定义CSS类名
...propsReact.ComponentProps<typeof DropdownMenuPrimitive.Item>-Item属性
属性类型必填默认值说明
insetboolean-是否缩进
classNamestring-自定义CSS类名
childrenReact.ReactNode-子元素

依赖

  • @radix-ui/react-dropdown-menu - Radix UI 下拉菜单原语
  • lucide-react - 图标库
  • @/lib/utils - 工具函数 (cn)

使用示例

import {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuItem,
  DropdownMenuLabel,
  DropdownMenuSeparator,
  DropdownMenuTrigger,
  DropdownMenuCheckboxItem,
  DropdownMenuRadioGroup,
  DropdownMenuRadioItem,
} from "@/components/ui/dropdown-menu";
import { Button } from "@/components/ui/button";

<DropdownMenu>
  <DropdownMenuTrigger asChild>
    <Button variant="outline">打开菜单</Button>
  </DropdownMenuTrigger>
  <DropdownMenuContent className="w-56">
    <DropdownMenuLabel>我的账户</DropdownMenuLabel>
    <DropdownMenuSeparator />
    <DropdownMenuItem>个人资料</DropdownMenuItem>
    <DropdownMenuItem>设置</DropdownMenuItem>
    <DropdownMenuItem disabled>企业版</DropdownMenuItem>
    <DropdownMenuSeparator />
    <DropdownMenuCheckboxItem checked>
      显示状态
    </DropdownMenuCheckboxItem>
    <DropdownMenuSeparator />
    <DropdownMenuRadioGroup value="light">
      <DropdownMenuRadioItem value="light">浅色</DropdownMenuRadioItem>
      <DropdownMenuRadioItem value="dark">深色</DropdownMenuRadioItem>
    </DropdownMenuRadioGroup>
  </DropdownMenuContent>
</DropdownMenu>
← 返回目录