FormControlLabel — это компонент библиотеки MUI
(Material-UI), предназначенный для связывания интерактивных элементов
управления, таких как чекбоксы (Checkbox), радиокнопки
(Radio) или переключатели (Switch), с
текстовыми подписями. Основная задача компонента — обеспечить корректное
позиционирование текста относительно элемента управления и гарантировать
доступность через свойства label и
control.
control: обязательное свойство, принимающее
React-элемент, обычно Checkbox, Radio или
Switch. Этот элемент будет управлять состоянием выбора.
<FormControlLabel
control={<Checkbox />}
label="Подписка на новости"
/>label: строка, элемент или React-компонент, который отображается рядом с контролом. Можно использовать для стилизованного текста, иконок или сложных JSX-компонентов.
labelPlacement: определяет расположение текста относительно элемента управления. Возможные значения:
"end" — справа (по умолчанию)"start" — слева"top" — сверху"bottom" — снизу Пример:<FormControlLabel
control={<Switch />}
label="Включить уведомления"
labelPlacement="start"
/>disabled: отключает и элемент управления, и подпись, делая их недоступными для взаимодействия.
<FormControlLabel
control={<Checkbox />}
label="Недоступная опция"
disabled
/>value: значение, ассоциированное с контролом,
особенно важно при работе с группами радио-кнопок
(RadioGroup).
onChange: функция обратного вызова при изменении состояния контрола. Позволяет управлять состоянием родительского компонента.
const [checked, setChecked] = React.useState(false);
<FormControlLabel
control={
<Checkbox checked={checked} onCha nge={(e) => setChecked(e.target.checked)} />
}
label="Принять условия"
/>FormControlLabel часто применяется внутри RadioGroup для
создания набора взаимно исключающих опций:
<RadioGroup value={selectedValue} onCha nge={(e) => setSelectedValue(e.target.value)}>
<FormControlLabel value="option1" control={<Radio />} label="Опция 1" />
<FormControlLabel value="option2" control={<Radio />} label="Опция 2" />
<FormControlLabel value="option3" control={<Radio />} label="Опция 3" />
</RadioGroup>
В этом примере RadioGroup управляет выбранной опцией, а
FormControlLabel обеспечивает визуальную и доступную связь
между радио-кнопкой и текстовой меткой.
Для кастомизации внешнего вида можно использовать свойства MUI
sx или классы CSS. Например, изменить цвет текста и размер
шрифта:
<FormControlLabel
control={<Checkbox />}
label="Выбрать все"
sx={{
color: 'primary.main',
'& .MuiFormControlLabel-label': {
fontSize: '1.2rem',
fontWeight: '500'
}
}}
/>
FormControlLabel автоматически связывает элемент управления с его
подписью через атрибут htmlFor, что повышает доступность
интерфейсов. Использование aria-label или
aria-labelledby обычно не требуется, если
label передан правильно.
FormGroup.RadioGroup
для создания групп опций.labelPlacement="end" для стандартного интерфейса.<FormGroup>
<FormControlLabel
control={<Checkbox checked={checkedA} onCha nge={handleChangeA} />}
label="Опция A"
/>
<FormControlLabel
control={<Checkbox checked={checkedB} onCha nge={handleChangeB} />}
label="Опция B"
labelPlacement="start"
/>
<FormControlLabel
control={<Switch checked={switchOn} onCha nge={toggleSwitch} />}
label="Включить функцию"
/>
</FormGroup>
В этом примере показано сочетание чекбоксов и переключателей с разным расположением текста, демонстрирующее гибкость компонента FormControlLabel.
labelPlacement).Checkbox, Radio,
Switch и группами этих контролов (FormGroup,
RadioGroup).sx, CSS-классы или темы
MUI.FormControlLabel является ключевым компонентом для создания удобных и доступных форм в MUI, обеспечивая единообразие и гибкость интерфейса при работе с элементами управления.