Компоненты Radio и Radio.Group в библиотеке Ant Design предоставляют удобные средства для создания переключателей и выбора одного варианта из набора. Они широко применяются в формах, фильтрах и интерфейсах с ограниченным выбором.
Radio — это базовый компонент одиночного переключателя. Его ключевые свойства:
true, радио выбран.e, содержащий
e.target.value и e.target.checked.Radio.Group для идентификации выбранного элемента.Пример использования одиночного радио:
import { Radio } from 'antd';
import { useState } from 'react';
const SingleRadioExample = () => {
const [checked, setChecked] = useState(false);
return (
<Radio
checked={checked}
onCha nge={e => setChecked(e.target.checked)}
>
Выбрать опцию
</Radio>
);
};
Здесь состояние checked контролирует, отмечен ли
элемент. Функция onChange обновляет состояние при
взаимодействии пользователя.
Radio.Group объединяет несколько радио-кнопок, позволяя выбрать только одну опцию из группы. Основные свойства:
e, содержащий
e.target.value.label и value.Пример использования Radio.Group с управляемым состоянием:
import { Radio } from 'antd';
import { useState } from 'react';
const RadioGroupExample = () => {
const [value, setValue] = useState('option1');
const onCha nge = e => {
setValue(e.target.value);
};
return (
<Radio.Group onCha nge={onChange} value={value}>
<Radio value="option1">Опция 1</Radio>
<Radio value="option2">Опция 2</Radio>
<Radio value="option3">Опция 3</Radio>
</Radio.Group>
);
};
В этом примере Radio.Group управляет состоянием выбора, гарантируя, что только один элемент может быть выбран одновременно.
Radio.Group поддерживает упрощённую конфигурацию через массив options, что позволяет сократить код при больших списках:
const options = [
{ label: 'Опция A', value: 'A' },
{ label: 'Опция B', value: 'B' },
{ label: 'Опция C', value: 'C' },
];
<Radio.Group
options={options}
onCha nge={e => console.log(e.target.value)}
value="B"
/>
При этом каждая опция автоматически превращается в Radio с соответствующим значением и текстом.
Для создания более интерактивных элементов можно использовать Radio.Button внутри Radio.Group. В отличие от стандартного радио, Radio.Button визуально выглядит как кнопка, что особенно удобно для выбора между несколькими вариантами:
import { Radio } from 'antd';
<Radio.Group defaultValue="1">
<Radio.Button value="1">Первый</Radio.Button>
<Radio.Button value="2">Второй</Radio.Button>
<Radio.Button value="3">Третий</Radio.Button>
</Radio.Group>
Radio.Button сохраняет логику выбора одного элемента, но улучшает визуальную наглядность, особенно при использовании горизонтальных панелей или фильтров.
value и onChange.
Позволяет синхронизировать данные с внешними формами или состоянием
приложения.defaultValue для начального значения без привязки к
состоянию. Выбор пользователя хранится внутри компонента.Пример неуправляемой группы:
<Radio.Group defaultValue="2">
<Radio value="1">Один</Radio>
<Radio value="2">Два</Radio>
<Radio value="3">Три</Radio>
</Radio.Group>
small, middle,
large).outline или solid стиль кнопки.Пример кастомного стиля:
<Radio.Group
value={value}
onCha nge={onChange}
buttonStyle="solid"
style={{ marginTop: 16 }}
>
<Radio.Button value="1">Первый</Radio.Button>
<Radio.Button value="2">Второй</Radio.Button>
</Radio.Group>
e.target.value.<Radio> для каждого элемента.Form.Item)
компоненты Radio поддерживают валидацию и привязку к состоянию формы
напрямую через name и rules.Эти возможности делают Radio и Radio.Group гибкими инструментами для управления выбором одного элемента, обеспечивая чистый и управляемый код, лёгкую стилизацию и интеграцию с формами и пользовательскими интерфейсами.