Components
import {
Select,
SelectContent,安装
pnpm dlx shadcn@latest add select
用法
import {
Select,
SelectContent,
SelectGroup,
SelectItem,
SelectTrigger,
SelectValue,
} from "@/components/ui/select"const items = [
{ label: "Light", value: "light" },
{ label: "Dark", value: "dark" },
{ label: "System", value: "system" },
]
<Select items={items}>
<SelectTrigger className="w-[180px]">
<SelectValue placeholder="主题" />
</SelectTrigger>
<SelectContent>
<SelectGroup>
{items.map((item) => (
<SelectItem key={item.value} value={item.value}>
{item.label}
</SelectItem>
))}
</SelectGroup>
</SelectContent>
</Select>示例
让选项与触发器对齐
在 SelectContent 中使用 alignItemWithTrigger 来控制选中的项是否与触发器对齐。当设置为 true(默认值)时,弹出框的位置使选中的项覆盖在触发器上方。当为 false 时,弹出框与触发器边缘对齐。
Toggle to align the item with the trigger.
"use client"
import * as React from "react"分组
使用 SelectGroup、SelectLabel 和 SelectSeparator 来组织选项。
import {
Select,
SelectContent,可滚动
一个包含大量选项且可滚动的选择框。
import {
Select,
SelectContent,禁用状态
import {
Select,
SelectContent,无效状态
给 Field 组件添加 data-invalid 属性,给 SelectTrigger 组件添加 aria-invalid 属性,以显示错误状态。
<Field data-invalid>
<FieldLabel>水果</FieldLabel>
<SelectTrigger aria-invalid>
<SelectValue />
</SelectTrigger>
</Field>Please select a fruit.
import { Field, FieldError, FieldLabel } from "@/components/ui/field"
import {
Select,RTL
要启用 shadcn/ui 的 RTL 支持,请参阅 RTL 配置指南。
"use client"
import * as React from "react"API 参考
请查看Base UI Select文档。