Компонент Checkbox в библиотеке MUI представляет
собой стандартный элемент формы для выбора одного или нескольких
вариантов. Он основан на элементе HTML
<input type="checkbox">, но предоставляет расширенные
возможности стилизации и интеграции с React.
Для использования Checkbox необходимо импортировать его из пакета
@mui/material:
import Checkbox from '@mui/material/Checkbox';
Простейший пример отображения чекбокса:
<Checkbox />
По умолчанию чекбокс находится в неактивном
состоянии (unchecked). Для управления состоянием используется
свойство checked.
import { useState } from 'react';
function ControlledCheckbox() {
const [checked, setChecked] = useState(false);
const handleChange = (event) => {
setChecked(event.target.checked);
};
return <Checkbox checked={checked} onCha nge={handleChange} />;
}
Здесь ключевой момент — управляемый компонент, где состояние чекбокса полностью контролируется через React state.
Checkbox может использоваться и без состояния React:
<Checkbox defaultChecked />
defaultChecked задаёт начальное
состояние, после чего компонент ведет себя как обычный
uncontrolled элемент.
primary, secondary, success,
error, info, warning,
default).Checkbox поддерживает промежуточное состояние, которое удобно использовать для выбора подмножеств в списках:
<Checkbox
checked={isChecked}
indeterminate={isIndeterminate}
onCha nge={handleChange}
/>
Для удобного отображения подписи рядом с чекбоксом применяется компонент FormControlLabel:
import FormControlLabel from '@mui/material/FormControlLabel';
<FormControlLabel
control={<Checkbox checked={checked} onCha nge={handleChange} />}
label="Принять условия"
/>
FormControlLabel обеспечивает правильную разметку и доступность (a11y).
MUI позволяет кастомизировать внешний вид чекбоксов:
<Checkbox
checked={checked}
onCha nge={handleChange}
sx={{
color: 'green',
'&.Mui-checked': {
color: 'darkgreen',
},
}}
/>
sx используется для быстрого изменения
стилей.&.Mui-checked применяется для состояния
выбора.import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank';
import CheckBoxIcon from '@mui/icons-material/CheckBox';
<Checkbox
icon={<CheckBoxOutlineBlankIcon />}
checkedIcon={<CheckBoxIcon />}
/>
Для нескольких чекбоксов удобно использовать массив состояний:
const options = ['Option 1', 'Option 2', 'Option 3'];
const [checkedItems, setCheckedItems] = useState([]);
const handleChange = (event) => {
const { name, checked } = event.target;
setCheckedItems((prev) =>
checked ? [...prev, name] : prev.filter((item) => item !== name)
);
};
options.map((option) => (
<FormControlLabel
key={option}
control={
<Checkbox
name={option}
checked={checkedItems.includes(option)}
onCha nge={handleChange}
/>
}
label={option}
/>
));
Checkbox хорошо интегрируется с популярными форм-менеджерами:
Formik:
import { Field } from 'formik';
<Field name="acceptTerms" type="checkbox" as={Checkbox} />
React Hook Form:
import { useForm, Controller } from 'react-hook-form';
<Controller
name="acceptTerms"
control={control}
render={({ field }) => <Checkbox {...field} />}
/>
label через
FormControlLabel.aria-label или aria-labelledby.aria-checked="mixed".Checkbox в MUI — это гибкий, настраиваемый компонент, поддерживающий:
Он является фундаментальной частью построения интерактивных интерфейсов с множественными вариантами выбора.