В Chakra UI компонент Toast предназначен для отображения временных уведомлений, которые появляются на экране и исчезают через заданное время. Toast используется для информирования пользователя о действиях, результатах операций или ошибках без вмешательства в основное содержимое интерфейса.
В Chakra UI для работы с Toast используется хук
useToast, который возвращает функцию для
создания уведомлений.
import { useToast, Button } fr om "@chakra-ui/react";
function Example() {
const toast = useToast();
return (
<Button
onCl ick={() =>
toast({
title: "Операция успешна",
description: "Данные были сохранены.",
status: "success",
duration: 5000,
isClosable: true,
})
}
>
Показать уведомление
</Button>
);
}
toast"success",
"error", "warning", "info".
Отвечает за цветовую стилизацию.null делает уведомление постоянным до закрытия
пользователем."top", "top-right", "top-left",
"bottom", "bottom-right",
"bottom-left", "center".toast({
title: "Ошибка сохранения",
status: "error",
duration: 3000,
position: "top-right",
});
Chakra UI позволяет кастомизировать Toast с помощью различных параметров и компонентных свойств.
isClosable.duration: null.toast({
title: "Важное уведомление",
description: "Эта информация требует внимания.",
status: "warning",
duration: null,
isClosable: true,
position: "top",
});
renderДля полного контроля над внешним видом Toast используется параметр
render, который позволяет передать
произвольный JSX.
toast({
duration: 4000,
position: "bottom-left",
render: () => (
<Box color="white" p={3} bg="purple.500" borderRadius="md">
Кастомное уведомление с уникальным стилем
</Box>
),
});
Это позволяет добавлять сложную разметку, кнопки и интерактивные элементы в уведомления.
Chakra UI автоматически управляет стеком уведомлений. При
одновременном вызове нескольких toast() уведомления
располагаются одно под другим в выбранной позиции.
Для ограничения количества одновременно отображаемых уведомлений
можно использовать свойство limit при
инициализации ChakraProvider.
import { ChakraProvider } from "@chakra-ui/react";
<ChakraProvider toastOptions={{ lim it: 3 }}>
<App />
</ChakraProvider>
Функция toast возвращает id
уведомления, который позволяет закрывать уведомление программно
с помощью метода close.
const id = toast({
title: "Временное уведомление",
duration: 5000,
});
toast.close(id);
Для закрытия всех уведомлений используется метод
toast.closeAll().
Chakra UI по умолчанию использует плавные анимации появления и исчезновения Toast. Параметры анимации настраиваются через темы Chakra, где можно изменить длительность, скорость и эффект появления уведомлений.
import { extendTheme } from "@chakra-ui/react";
const theme = extendTheme({
components: {
Toast: {
baseStyle: {
transform: "translateY(0)",
transition: "all 0.4s ease",
},
},
},
});
render.toast({
render: () => (
<Box p={3} bg="green.400" color="white" borderRadius="md">
Данные обновлены. <Button size="sm">Отменить</Button>
</Box>
),
});
Часто Toast используется для уведомления пользователя о результатах асинхронных операций:
async function handleSubmit(data) {
try {
await api.saveData(data);
toast({ title: "Данные сохранены", status: "success" });
} catch (error) {
toast({ title: "Ошибка", description: error.message, status: "error" });
}
}
Такой подход обеспечивает мгновенную обратную связь и повышает удобство работы с интерфейсом.
render только для сложных
уведомлений, иначе достаточно стандартных параметров.Эффективное использование Toast в Chakra UI повышает информативность интерфейса, делая уведомления понятными, ненавязчивыми и визуально приятными.