Select (Список)
Компонент 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>.
Для более продвинутых опций, таких как Комбинированные Списки, Множественный Выбор, Автодополнения, а также поддержки async или Creatable, воспользуйтесь компонентом Autocomplete. It's meant to be an improved version of the "react-select" and "downshift" packages.
Props
Filled and outlined variants
With label + helper text
Without label
Disabled
Error
Read only
Required
Текстовые поля
Мы допускаем этот подход, так как использование нативных списков на мобильных платформах улучшает опыт пользователя (User Experience).
<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 представляет собой полноценный элемент управления формы, включая метку (label), само поле ввода и вспомогательный текст. Чтобы правильно подписать ваш элемент Select, вам потребуется дополнительный элемент со свойством id.
Кастомизированные списки
Ниже находятся примеры кастомизации компонента. You can learn more about this in the overrides documentation page.
Чтобы правильно подписать ваш элемент Select, вам потребуется дополнительный элемент со свойством id. После стилизации, вы можете использовать компонент напрямую как текстовое поле, либо передать его в компонент Select, свойством input.
🎨 If you are looking for inspiration, you can check MUI Treasury's customization examples.
Контроль открытия/закрытия
Компонент Select поддерживает множественный выбор. Компонент Select поддерживает множественный выбор.
Как и с одиночным списком, новое значение может быть получено из поля event.target.value, в коллбеке onChange. Это значение всегда является массивом.
По-умолчанию
Chip
В качестве альтернативы, компонент TextField со свойствами id и label создадут подходящую разметку:
Placeholder
Группировка
Хоть это и не приветствуется спецификацией Material Design, вы можете использовать список внутри диалогового окна.
Группировка
Используйте компонент ListSubheader или нативный элемент <optgroup> для отображения категорий.
Доступность
Чтобы правильно подписать ваш элемент Select, вам потребуется дополнительный элемент со свойством id. Значение id должно совпадать со значением свойства labelId компонента Select, например
<InputLabel id="label">Age</InputLabel>
<Select labelId="label" id="select" value="20">
<MenuItem value="10">Ten</MenuItem>
<MenuItem value="20">Twenty</MenuItem>
</Select>
В качестве альтернативы, компонент TextField со свойствами id и label создадут подходящую разметку:
<TextField id="select" label="Age" value="20" select>
<MenuItem value="10">Ten</MenuItem>
<MenuItem value="20">Twenty</MenuItem>
</TextField>
For a native select, you should mention a label by giving the value of the id attribute of the select element to the InputLabel's htmlFor attribute:
<InputLabel htmlFor="select">Age</InputLabel>
<NativeSelect id="select">
<option value="10">Ten</option>
<option value="20">Twenty</option>
</NativeSelect>