Компонент Alert в библиотеке MUI предназначен для
отображения уведомлений различного типа, включая информационные
сообщения, предупреждения, ошибки и успешные действия. Он является
частью пакета @mui/material и строится на базе компонента
Snackbar, обеспечивая гибкость и визуальное
соответствие Material Design.
Для использования компонента необходимо импортировать его из MUI:
import Alert from '@mui/material/Alert';
Простейший пример отображения уведомления:
<Alert severity="success">
Операция выполнена успешно!
</Alert>
Ключевой параметр severity определяет тип уведомления. Возможные значения:
"error" — сообщение об ошибке."warning" — предупреждение."info" — информационное сообщение."success" — успешное действие.Компонент Alert поддерживает различные варианты отображения через проп variant:
standard — базовый стиль, без дополнительного
фона.outlined — с обводкой.filled — с заполнением цветом, соответствующим типу
уведомления.Пример использования:
<Alert severity="warning" variant="outlined">
Внимание! Проверьте введенные данные.
</Alert>
<Alert severity="info" variant="filled">
Информация обновлена.
</Alert>
По умолчанию MUI добавляет иконку, соответствующую типу уведомления. Для её замены используется проп icon:
<Alert
severity="error"
icon={<CustomErrorIcon />}
>
Произошла критическая ошибка.
</Alert>
Можно полностью убрать иконку, установив значение
false:
<Alert severity="info" icon={false}>
Новое уведомление без иконки.
</Alert>
Компонент поддерживает механизм закрытия через проп onClose. Можно добавить кнопку закрытия:
<Alert
severity="success"
onCl ose={() => console.log('Alert закрыт')}
>
Данные успешно сохранены.
</Alert>
Для интеграции с кнопкой закрытия внутри Alert можно использовать компонент IconButton и CloseIcon из MUI.
Для отображения уведомлений, которые автоматически исчезают через заданное время, рекомендуется использовать Snackbar вместе с Alert:
import Snackbar from '@mui/material/Snackbar';
<Snackbar
open={open}
autoHideDuration={3000}
onCl ose={handleClose}
>
<Alert onCl ose={handleClose} severity="info" variant="filled">
Сообщение автоматически исчезнет через 3 секунды
</Alert>
</Snackbar>
Проп autoHideDuration задает время в миллисекундах, после которого уведомление закроется автоматически.
Alert поддерживает более сложный контент: заголовок, список действий, ссылки и дополнительные компоненты:
<Alert severity="warning" variant="outlined">
<AlertTitle>Внимание!</AlertTitle>
Проверьте поля формы. <strong>Некоторые значения некорректны.</strong>
</Alert>
Использование компонента AlertTitle позволяет выделить заголовок и структурировать уведомление.
Для тонкой настройки внешнего вида применяются sx пропсы или системная тема MUI. Примеры:
<Alert
severity="success"
sx={{
backgroundColor: 'lightgreen',
color: 'darkgreen',
borderRadius: 2,
}}
>
Кастомизированное успешное уведомление
</Alert>
Использование темы позволяет глобально управлять стилями всех Alert-компонентов:
import { createTheme, ThemeProvider } from '@mui/material/styles';
const theme = createTheme({
components: {
MuiAlert: {
styleOverrides: {
standardSuccess: {
backgroundColor: '#d0f0c0',
color: '#2e7d32',
},
},
},
},
});
<ThemeProvider theme={theme}>
<Alert severity="success">Тема применена к этому Alert</Alert>
</ThemeProvider>
Alert в MUI является мощным инструментом для уведомлений, позволяя создавать как простые сообщения, так и сложные уведомления с полной интеграцией в дизайн-систему.