Select 选择属性
选择器组件能从一个选项列表中去获得用户所提供的信息。
<FormControl fullWidth>
  <InputLabel id="demo-simple-select-label">Age</InputLabel>
  <Select
    labelId="demo-simple-select-label"
    id="demo-simple-select"
    value={age}
    onChange={handleChange}
  >
    <MenuItem value={10}>Ten</MenuItem>
    <MenuItem value={20}>Twenty</MenuItem>
    <MenuItem value={30}>Thirty</MenuItem>
  </Select>
</FormControl>高级功能
Select 组件的设计原理是和一个原生的 <select> 元素能够互相替代。
若您需要一个更优雅的功能,譬如 combobox,multiselect,autocomplete,async 或者 creatable support,请查看 Autocomplete 组件。 此组件旨在改进 “react-select” 和 “downshift” 这两个包。
属性
填充(Filled)和描边(outlined)变量
With label + helper text
Without label
Disabled
Error
Read only
Required
<FormControl fullWidth>
  <InputLabel htmlFor="uncontrolled-native">Age</InputLabel>
  <NativeSelect
    defaultValue={30}
    inputProps={{
      name: 'age',
      id: 'uncontrolled-native',
    }}
  >
    <option value={10}>Ten</option>
    <option value={20}>Twenty</option>
    <option value={30}>Thirty</option>
  </NativeSelect>
</FormControl>TextField
TextField wrapper 组件是一个完整的表单控件,它包括了标签,输入和帮助文本。 您可以在 在此章节中 查看使用 select 模式的示例。
自定义选择器
你可以参考以下一些例子来自定义组件。 您可以在重写文档页中了解有关此内容的更多信息。
首先,需要设置 InputBase 组件的样式。 一旦设置好了样式,您就可以直接将其用作文本字段,也可以将其作为一个 select 字段提供给 select 组件的 input 属性。
🎨 如果您还在寻找灵感,您可以看看 MUI Treasury 特别定制的一些例子。
多重选择
Select 组件也支持多项选择。 你可以通过使用 multiple 属性来启用它。
与单项选择一样,您可以通过访问 onChange 的回调函数中的 event.target.value  来提取新的值。 它总是以一个数组的形式出现。
默认值
无障碍设计
若想正确的给 Select 加上标签,你的 input 控件需要一个额外的带有 label 的 id 属性。 id 的内容需要和 Select 的 labelId 值相同,例如:
<InputLabel id="label">年龄</InputLabel>
<Select labelId="label" id="select" value="20">
  <MenuItem value="10">10</MenuItem>
  <MenuItem value="20">20</MenuItem>
</Select>或者,您也可以使用一个带有 id 和 label 的 TextField 组件来创建合适的标记和 id:
<TextField id="select" label="Age" value="20" select>
  <MenuItem value="10">Ten</MenuItem>
  <MenuItem value="20">Twenty</MenuItem>
</TextField>对于一个 原生选择器,你应该通过将选择元素的 id 属性的值赋给 InputLabel 的 htmlFor 属性来提及标签。
<InputLabel htmlFor="select">Age</InputLabel>
<NativeSelect id="select">
  <option value="10">Ten</option>
  <option value="20">Twenty</option>
</NativeSelect>