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> По умолчанию: - |
getRootRef | Ref<HTMLLabelElement> По умолчанию: - |
hasActive | boolean Указывает, должен ли компонент реагировать на По умолчанию: - |
hasHover | boolean Указывает, должен ли компонент реагировать на По умолчанию: - |
hoverMode | StateModeLiteral Стиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover. По умолчанию: - |
labelProps | HasDataAttribute Позволяет передавать data-* аттрибуты элементу label. По умолчанию: - |
titleAfter | ReactNode Элемент после основного текста. По умолчанию: - |
Radio.Input
Свойство | Описание |
---|---|
getRef | Ref<HTMLInputElement> По умолчанию: - |
getRootRef | Ref<HTMLLabelElement> По умолчанию: - |