使用 Premium Chakra UI 组件更快地构建 💎

了解更多
跳到内容
文档演练场指南博客
赞助商

Select

用于从预定义选项中选择一个值。

源代码Storybook组件配方Ark

用法

import { Select } from "@chakra-ui/react"
<Select.Root>
  <Select.HiddenSelect />
  <Select.Label />

  <Select.Control>
    <Select.Trigger>
      <Select.ValueText />
    </Select.Trigger>
    <Select.IndicatorGroup>
      <Select.Indicator />
      <Select.ClearTrigger />
    </Select.IndicatorGroup>
  </Select.Control>

  <Select.Positioner>
    <Select.Content>
      <Select.Item />

      <Select.ItemGroup>
        <Select.ItemGroupLabel />
        <Select.Item />
      </Select.ItemGroup>
    </Select.Content>
  </Select.Positioner>
</Select.Root>

示例

尺寸

使用 size 属性来改变 select 组件的尺寸。

变体

使用 variant 属性来改变 select 组件的外观。

选项组

使用 Select.ItemGroup 组件对选择选项进行分组。

受控

使用 valueonValueChange 属性来控制 select 组件。

异步加载

这是一个如何从远程源填充 select collection 的示例。

Hook Form

这是一个如何将 Select 组件与 react-hook-form 一起使用的示例。

禁用

使用 disabled 属性来禁用 select 组件。

无效

这是一个如何将 Select 组件与 Field 组件组合以显示错误状态的示例。

这是一个错误

多选

使用 multiple 属性允许多选。

定位

使用 positioning 属性控制 select 组件底层 floating-ui 的选项。

清除触发器

渲染 Select.ClearTrigger 组件以显示清除按钮。点击清除按钮将清除选定的值。

溢出

当选项过多时,由于设置了 maxHeight,选项将溢出容器。

项目描述

这是一个如何为每个项目渲染描述的示例。

在弹出框内

这是一个如何在 Popover 组件内使用 Select 的示例。

在对话框内

要在 Dialog 内使用 Select,您需要避免将 Select.Positioner 传送到文档主体。

-<Portal>
  <Select.Positioner>
    <Select.Content>
      {/* ... */}
    </Select.Content>
  </Select.Positioner>
-</Portal>

头像选择

这是一个如何组合 SelectAvatar 的示例。

国家选择

这是一个如何使用 Select 组件选择国家的示例。

图标按钮

这是一个如何使用 IconButton 触发 select 组件的示例。

属性

属性默认类型
collection *
ListCollection<T>

项目集合

closeOnSelect true
boolean

选择项目后是否关闭选择器

composite true
boolean

选择器是否与其他复合小部件(如选项卡或组合框)组合

lazyMount false
boolean

是否启用延迟挂载

loopFocus false
boolean

是否循环键盘导航选项

unmountOnExit false
boolean

退出时是否卸载。

colorPalette 'gray'
'gray' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'blue' | 'cyan' | 'purple' | 'pink'

组件的调色板

variant 'outline'
'outline' | 'subtle'

组件的变体

size 'md'
'xs' | 'sm' | 'md' | 'lg'

组件的尺寸

asChild
boolean

使用提供的子元素作为默认渲染元素,结合其属性和行为。

有关更多详细信息,请阅读我们的 组合 指南。
defaultOpen
boolean

选择器首次渲染时的初始打开状态。当您不需要控制其打开状态时使用。

defaultValue
string[]

选择器首次渲染时的初始值。当您不需要控制选择器状态时使用。

deselectable
boolean

是否可以通过点击选定项目来清除值。**注意:**这仅适用于单选。

disabled
boolean

选择器是否被禁用

form
string

底层选择器的关联表单。

highlightedValue
string

高亮项目的键

id
string

机器的唯一标识符。

ids
Partial<{ root: string content: string control: string trigger: string clearTrigger: string label: string hiddenSelect: string positioner: string item(id: string | number): string itemGroup(id: string | number): string itemGroupLabel(id: string | number): string }>

选择器中元素的 ID。用于组合。

immediate
boolean

是否立即同步当前更改或将其推迟到下一帧

invalid
boolean

选择器是否无效

multiple
boolean

是否允许多选

name
string

底层选择器的 `name` 属性。

onExitComplete
() => void

在关闭状态动画结束时调用的函数

onFocusOutside
(event: FocusOutsideEvent) => void

焦点移到组件外部时调用的函数

onHighlightChange
(details: HighlightChangeDetails<T>) => void

高亮项目更改时触发的回调。

onInteractOutside
(event: InteractOutsideEvent) => void

在组件外部发生交互时调用的函数

onOpenChange
(details: OpenChangeDetails) => void

弹出窗口打开时调用的函数

onPointerDownOutside
(event: PointerDownOutsideEvent) => void

指针在组件外部按下时调用的函数

onValueChange
(details: ValueChangeDetails<T>) => void

选定项目更改时触发的回调。

open
boolean

选择菜单是否打开

positioning
PositioningOptions

菜单的定位选项。

present
boolean

节点是否存在(由用户控制)

readOnly
boolean

选择器是否只读

required
boolean

选择器是否为必填

scrollToIndexFn
(details: ScrollToIndexDetails) => void

滚动到特定索引的函数

value
string[]

选定项目的键

as
React.ElementType

要渲染的底层元素。

unstyled
boolean

是否移除组件样式。

上一个

Select(原生)

下一个

分隔符