Компонент Switch в библиотеке MUI представляет собой визуальный элемент управления, позволяющий пользователю переключать состояние между двумя вариантами: включено и выключено. В отличие от стандартного чекбокса, Switch имеет более современный вид и используется для индикации состояния, которое часто влияет на глобальные настройки приложения.
В MUI Switch реализован как функциональный компонент React, который
поддерживает все стандартные свойства элементов формы, включая
checked, onChange, disabled и
color.
import Switch from '@mui/material/Switch';
function BasicSwitch() {
const [checked, setChecked] = React.useState(false);
const handleChange = (event) => {
setChecked(event.target.checked);
};
return <Switch checked={checked} onCha nge={handleChange} />;
}
true, элемент
становится недоступным для взаимодействия.primary, secondary,
default и другие кастомные значения).Switch может использоваться в контролируемом и неконтролируемом режимах:
defaultChecked вместо checked:<Switch defaultChecked />
В этом случае React state не требуется, и компонент сам запоминает текущее положение переключателя.
MUI предоставляет гибкую кастомизацию Switch с помощью свойства
sx и системных цветов:
<Switch
checked={checked}
onCha nge={handleChange}
sx={{
'& .MuiSwitch-thumb': {
backgroundColor: 'orange',
},
'& .Mui-checked': {
color: 'green',
},
'& .MuiSwitch-track': {
backgroundColor: 'lightgray',
},
}}
/>
Также возможна настройка через тему MUI, позволяя задать единый стиль для всех Switch в приложении.
Switch часто используется внутри форм. MUI предлагает оборачивать Switch в FormControlLabel для добавления текста метки:
import FormControlLabel from '@mui/material/FormControlLabel';
<FormControlLabel
control={<Switch checked={checked} onCha nge={handleChange} />}
label="Включить уведомления"
/>
Если требуется несколько переключателей в группе, используют FormGroup для вертикального или горизонтального расположения:
import FormGroup from '@mui/material/FormGroup';
<FormGroup>
<FormControlLabel control={<Switch />} label="Опция 1" />
<FormControlLabel control={<Switch />} label="Опция 2" />
</FormGroup>
Switch в MUI полностью соответствует стандартам доступности (ARIA). Он поддерживает:
aria-label — для описания назначения
переключателя.aria-checked — отражает текущее состояние.tabIndex — управление навигацией с клавиатуры.Пример с доступностью:
<Switch
checked={checked}
onCha nge={handleChange}
inputProps={{ 'aria-label': 'Включение темной темы' }}
/>
size="small" и size="medium" для изменения
размеров бегунка.color="success", color="error", создавая
визуальное соответствие статусу действия.Пример динамического изменения состояния через Switch:
function ThemeToggle() {
const [darkMode, setDarkMode] = React.useState(false);
const handleThemeChange = () => {
setDarkMode(!darkMode);
document.body.style.backgroundColor = darkMode ? '#fff' : '#121212';
};
return (
<FormControlLabel
control={<Switch checked={darkMode} onCha nge={handleThemeChange} />}
label="Темная тема"
/>
);
}
Switch в MUI — это гибкий, настраиваемый компонент, который подходит для реализации бинарных переключателей в интерфейсе. Благодаря интеграции с FormControl, системам стилизации и поддержке доступности, он может быть использован как для простых форм, так и для сложных интерфейсных решений, где требуется четкая визуальная индикация состояния.