跳到主要内容
+

选择

Select 组件用于从选项列表中收集用户提供的信息。

基础选择

菜单位于其触发元素下方,除非它们靠近视口底部。

Enter 键开始编辑

高级特性

Select 组件旨在与原生 <select> 元素互换使用。

如果您正在寻找更高级的功能,例如组合框、多选、自动完成、异步或可创建的支持,请前往 Autocomplete 组件。它旨在成为 "react-select" 和 "downshift" 包的改进版本。

属性

Select 组件被实现为 InputBase 的自定义 <input> 元素。它扩展了 文本框组件 的子组件,即 OutlinedInputInputFilledInput,具体取决于所选的变体。它共享相同的样式和许多相同的属性。有关详细信息,请参阅相应组件的 API 页面。

填充和标准变体

带标签 + 辅助文本

无标签

自动宽度

禁用

错误

只读

必填

原生选择

由于使用平台的原生选择器可以在移动设备上改善用户体验,因此我们允许这种模式。

Enter 键开始编辑

文本框

TextField 包装组件是一个完整的表单控件,包括标签、输入和帮助文本。您可以在 此部分 找到选择模式的示例。

自定义

这里有一些自定义组件的示例。您可以在 覆盖文档页面 中了解更多信息。

第一步是设置 InputBase 组件的样式。一旦设置了样式,您可以直接将其用作文本框,或者将其提供给 select input 属性以获得 select 字段。请注意,"standard" 变体更容易自定义,因为它不会将内容包装在 fieldset/legend 标记中。

🎨 如果您正在寻找灵感,可以查看 MUI Treasury 的自定义示例

多选

Select 组件可以处理多项选择。它通过 multiple 属性启用。

与单项选择一样,您可以通过访问 onChange 回调中的 event.target.value 来提取新值。它始终是一个数组。

默认

控制打开状态

您可以使用 open 属性控制 select 的打开状态。或者,也可以使用 defaultOpen 属性设置组件的初始(非受控)打开状态。

使用对话框

虽然 Material Design 指南不鼓励这样做,但您可以在对话框内使用选择框。

分组

使用 ListSubheader 组件或原生 <optgroup> 元素显示类别。

无障碍

为了正确标记您的 Select 输入,您需要一个额外的元素,其 id 包含一个标签。该 id 需要与 SelectlabelId 匹配,例如

<InputLabel id="label">Age</InputLabel>
<Select labelId="label" id="select" value="20">
  <MenuItem value="10">Ten</MenuItem>
  <MenuItem value="20">Twenty</MenuItem>
</Select>

或者,带有 idlabelTextField 会为您创建正确的标记和 id

<TextField id="select" label="Age" value="20" select>
  <MenuItem value="10">Ten</MenuItem>
  <MenuItem value="20">Twenty</MenuItem>
</TextField>

对于 原生选择,您应该通过将 select 元素的 id 属性值赋予 InputLabelhtmlFor 属性来提及标签

<InputLabel htmlFor="select">Age</InputLabel>
<NativeSelect id="select">
  <option value="10">Ten</option>
  <option value="20">Twenty</option>
</NativeSelect>

无样式

使用 Base UI Select 完全掌控组件的设计,无需覆盖 Material UI 或 Joy UI 样式。此无样式版本的组件是进行重度自定义和缩小包大小的理想选择。

API

请参阅下面的文档,以获取此处提及的组件的所有属性和类的完整参考。