Radio
Компонент для выбора одного значения из списка опций. Компонент представляет собой переключатель с круглой меткой, который может быть в двух состояниях: выбранном и невыбранном.
Режим работы
Компонент поддерживает работу как в неконтролируемом режиме, так и контролируемом. Это стандартное поведение React-компонентов, прочитать про это можно в документации React ↗.
Для использования неконтролируемого режима достаточно просто не передавать checked или передавать defaultChecked, если
требуется задать значение по умолчанию.
Для контролируемого режима используйте связку свойств checked/onChange для задания значения и его изменения.
// Неконтролируемое состояние, по умолчанию в состоянии "выбран"
<Radio name="pay" value="card" defaultChecked>
Оплата картой
</Radio>;
// Контролируемое состояние, значение "не выбран"
const [checked, setChecked] = React.useState(false);
<Radio name="pay" value="card" checked={checked} onChange={(event) => setChecked(true)}>
Оплата картой
</Radio>;Состояния
disabled
Свойство disabled блокирует взаимодействие с компонентом и добавляет визуальную индикацию недоступности.
Применение компонента
- используйте от двух до пяти компонентов
Radio, объединенных в группу (при большем количестве опций рассмотрите возможность использования компонентаSelect); - если вам необходим компонент с индикацией отмечен/не отмечен,
то используйте
CheckboxилиSwitch; - для выбора нескольких значений из списка используйте
Checkbox.
Доступность (a11y)
Компонент Radio обеспечивает базовую доступность, используя нативные HTML-элементы input[type="radio"] и label.
Для улучшения доступности рекомендуется:
- группировать связанные
Radioс помощью компонентаRadioGroup(или любую другую обёртку сrole="radiogroup"); - использовать свойство
descriptionдля предоставления дополнительной информации; - при необходимости добавлять
aria-labelилиaria-labelledbyдля более подробного описания.
Свойства и методы
Radio
| Свойство | Описание |
|---|---|
activeMode | StateModeLiteralСтиль подсветки active-состояния. Если передать произвольную строку, она добавится как css-класс во время active. По умолчанию: - |
description | ReactNodeДополнительное описание под основным текстом. По умолчанию: - |
focusVisibleMode | FocusVisibleModeСтиль аутлайна focus visible. Если передать произвольную строку, она добавится как css-класс при :focus-visible По умолчанию: - |
getRef | Ref<HTMLInputElement>Deprecated: Since 7.9.0. Вместо этого используйте По умолчанию: - |
getRootRef | Ref<HTMLLabelElement>По умолчанию: - |
hasActive | booleanУказывает, должен ли компонент реагировать на По умолчанию: - |
hasHover | booleanУказывает, должен ли компонент реагировать на По умолчанию: - |
hoverMode | StateModeLiteralСтиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover. По умолчанию: - |
labelProps | HasDataAttributeDeprecated: Since 7.9.0. Вместо этого используйте Позволяет передавать data-* аттрибуты элементу label. По умолчанию: - |
slotProps | { root?: (Omit<LabelHTMLAttributes<HTMLLabelElement>, "children"> & HasRootRef<HTMLLabelElement> & HasDataAttribute); input?: (ClassAttributes<...> & ... 2 more ... & HasDataAttribute) | undefined; } | undefinedСвойства, которые можно прокинуть внутрь компонента:
По умолчанию: - |
titleAfter | ReactNodeЭлемент после основного текста. По умолчанию: - |
Radio.Input
| Свойство | Описание |
|---|---|
getRef | Ref<HTMLInputElement>Deprecated: Since 7.9.0. Вместо этого используйте По умолчанию: - |
getRootRef | Ref<HTMLLabelElement>По умолчанию: - |
slotProps | { root?: (Omit<LabelHTMLAttributes<HTMLLabelElement>, "children"> & HasRootRef<HTMLLabelElement> & HasDataAttribute); input?: (Omit<...> & ... 1 more ... & HasDataAttribute) | undefined; } | undefinedСвойства, которые можно прокинуть внутрь компонента:
По умолчанию: - |