120k

下拉菜单

向用户显示菜单——例如一组操作或功能——由按钮触发。

"use client"

import { Button } from "@/components/ui/button"

安装

pnpm dlx shadcn@latest add dropdown-menu

用法

import { Button } from "@/components/ui/button"
import {
  DropdownMenu,
  DropdownMenuGroup,
  DropdownMenuItem,
  DropdownMenuLabel,
  DropdownMenuSeparator,
  DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu"
<DropdownMenuTrigger>
  <Button variant="outline">打开</Button>
  <DropdownMenu>
    <DropdownMenuGroup>
      <DropdownMenuLabel>我的账户</DropdownMenuLabel>
      <DropdownMenuItem>个人资料</DropdownMenuItem>
      <DropdownMenuItem>账单</DropdownMenuItem>
    </DropdownMenuGroup>
    <DropdownMenuSeparator />
    <DropdownMenuGroup>
      <DropdownMenuItem>团队</DropdownMenuItem>
      <DropdownMenuItem>订阅</DropdownMenuItem>
    </DropdownMenuGroup>
  </DropdownMenu>
</DropdownMenuTrigger>

组合

使用以下组合来构建 DropdownMenu

DropdownMenuTrigger
├── Button
└── DropdownMenu
    ├── DropdownMenuGroup
    │   ├── DropdownMenuLabel
    │   ├── DropdownMenuItem
    │   └── DropdownMenuItem
    ├── DropdownMenuSeparator
    ├── DropdownMenuGroup
    │   ├── DropdownMenuLabel
    │   ├── DropdownMenuItem
    │   └── DropdownMenuItem
    └── DropdownMenuSub
        ├── DropdownMenuSubTrigger
        └── DropdownMenuSubContent
            └── DropdownMenuGroup
                ├── DropdownMenuLabel
                ├── DropdownMenuItem
                └── DropdownMenuItem

基础

带有标签和分隔线的基础下拉菜单。

"use client"

import { Button } from "@/components/ui/button"

子菜单

使用 DropdownMenuSub 嵌套次级操作。

"use client"

import { Button } from "@/components/ui/button"

快捷键

添加 DropdownMenuShortcut 以显示键盘提示。

"use client"

import { Button } from "@/components/ui/button"

图标

将图标与标签结合,便于快速浏览。

"use client"

import {

复选框

对于切换控件,请使用 selectionMode="multiple"

"use client"

import * as React from "react"

复选框图标

为复选框项目添加图标。

"use client"

import * as React from "react"

单选组

使用 selectionMode="single" 进行互斥选择。

"use client"

import * as React from "react"

单选图标

使用图标显示单选选项。

"use client"

import * as React from "react"

危险操作

对于不可逆操作,请使用 variant="destructive"

"use client"

import { PencilIcon, ShareIcon, TrashIcon } from "lucide-react"

头像

由头像触发的账户切换下拉菜单。

"use client"

import {

复杂示例

一个结合了分组、图标和子菜单的更丰富示例。

"use client"

import * as React from "react"

RTL

要在 shadcn/ui 中启用 RTL 支持,请参阅 RTL 配置指南

"use client"

import * as React from "react"

API 参考

请参阅 React Aria 文档 以获取完整的 API 参考。