Радиокнопка
Radio buttons allow the user to select one option from a set.
Use radio buttons when the user needs to see all available options. Если доступные параметры можно свернуть, возможно лучше использовать раскрывающееся меню, так как оно занимает меньше места.
Для радиокнопок наиболее часто используемый параметр должен быть выбран по умолчанию.
RadioGroup
RadioGroup
- это полезная обертка, используемая для группировки компонентов Radio
, она обеспечивает более простой API и управление с клавиатуры.
<FormControl component="fieldset">
<FormLabel component="legend">Gender</FormLabel>
<RadioGroup aria-label="gender" name="gender1" value={value} onChange={handleChange}>
<FormControlLabel value="female" control={<Radio />} label="Female" />
<FormControlLabel value="male" control={<Radio />} label="Male" />
<FormControlLabel value="other" control={<Radio />} label="Other" />
<FormControlLabel value="disabled" disabled control={<Radio />} label="(Disabled option)" />
</RadioGroup>
</FormControl>
To lay out the buttons horizontally, set the row
prop: <RadioGroup row />
.
Standalone radio buttons
Radio
can also be used standalone, without the RadioGroup wrapper.
Расположение метки
You can change the placement of the label with the FormControlLabel
component's labelPlacement
prop:
Отображение ошибок
In general, radio buttons should have a value selected by default. If this is not the case, you can display an error if no value is selected when the form is submitted:
<form onSubmit={handleSubmit}>
<FormControl component="fieldset" error={error} className={classes.formControl}>
<FormLabel component="legend">Pop quiz: Material-UI is...</FormLabel>
<RadioGroup aria-label="quiz" name="quiz" value={value} onChange={handleRadioChange}>
<FormControlLabel value="best" control={<Radio />} label="The best!" />
<FormControlLabel value="worst" control={<Radio />} label="The worst." />
</RadioGroup>
<FormHelperText>{helperText}</FormHelperText>
<Button type="submit" variant="outlined" color="primary" className={classes.button}>
Check Answer
</Button>
</FormControl>
</form>
Customized radios
Ниже находится пример кастомизации компонента. You can learn more about this in the overrides documentation page.
<FormControl component="fieldset">
<FormLabel component="legend">Gender</FormLabel>
<RadioGroup defaultValue="female" aria-label="gender" name="customized-radios">
<FormControlLabel value="female" control={<StyledRadio />} label="Female" />
<FormControlLabel value="male" control={<StyledRadio />} label="Male" />
<FormControlLabel value="other" control={<StyledRadio />} label="Other" />
<FormControlLabel
value="disabled"
disabled
control={<StyledRadio />}
label="(Disabled option)"
/>
</RadioGroup>
</FormControl>
Бесплатно
Доступность
(WAI-ARIA: https://www.w3.org/TR/wai-aria-practices/#radiobutton)
- Все элементы формы должны иметь метки, в том числе радиокнопки, переключатели и чекбоксы. В большинстве случаев это делается с помощью элемента
<label>
(FormControlLabel). - Когда метка не может быть использована, необходимо добавить атрибут непосредственно на поле ввода. В этом случае можно применить дополнительный атрибут (например,
aria-label
,aria-labelledby
,title
) через свойствоinputProps
.
<RadioButton
value="radioA"
inputProps={{ 'aria-label': 'Radio A' }}
/>