Для использования Toastify в React необходимо установить пакет через npm или yarn:
npm install react-toastify
# или
yarn add react-toastify
После установки подключается CSS библиотеки:
import 'react-toastify/dist/ReactToastify.css';
import { ToastContainer, toast } from 'react-toastify';
ToastContainer должен присутствовать в компоненте
верхнего уровня, чтобы уведомления могли отображаться корректно.
function App() {
return (
<div>
<ToastContainer />
{/* Остальная разметка */}
</div>
);
}
Toastify предоставляет метод toast, который позволяет
создавать уведомления различного типа.
Примеры использования:
toast("Простое уведомление");
toast.success("Операция успешна");
toast.error("Произошла ошибка");
toast.info("Информационное сообщение");
toast.warn("Предупреждение");
Каждое уведомление можно настраивать через объект опций.
Ключевые параметры:
position — расположение уведомления на экране.
Возможные значения:
toast.POSITION.TOP_LEFTtoast.POSITION.TOP_RIGHTtoast.POSITION.BOTTOM_LEFTtoast.POSITION.BOTTOM_RIGHTtoast.POSITION.TOP_CENTERtoast.POSITION.BOTTOM_CENTERautoClose — время автоматического закрытия
уведомления в миллисекундах. Если указать false,
уведомление останется до закрытия вручную.
hideProgressBar — скрыть или показать индикатор
прогресса.
closeOnClick — разрешить закрытие по клику.
pauseOnHover — приостановка таймера при
наведении.
draggable — разрешить перемещение уведомления
мышью.
Пример с опциями:
toast.success("Данные сохранены", {
position: toast.POSITION.TOP_RIGHT,
autoClose: 3000,
hideProgressBar: false,
closeOnClick: true,
pauseOnHover: true,
draggable: true,
});
Toastify позволяет программно управлять уведомлениями.
Закрытие уведомления:
const id = toast("Задача выполняется");
// Закрыть через 2 секунды
setTimeout(() => toast.dismiss(id), 2000);
Очистка всех уведомлений:
toast.dismiss();
Обновление уведомления:
const id = toast("Загрузка...");
setTimeout(() => {
toast.update(id, {
render: "Загрузка завершена",
type: toast.TYPE.SUCCESS,
autoClose: 2000
});
}, 3000);
Для отображения уведомлений во время асинхронных операций можно использовать промисы.
const fetchData = async () => {
const promise = fetch("/api/data")
.then(response => response.json());
toast.promise(
promise,
{
pending: "Загрузка данных...",
success: "Данные успешно загружены",
error: "Ошибка при загрузке данных"
}
);
await promise;
};
toast.promise автоматически покажет разные уведомления в
зависимости от состояния промиса: ожидание, успех, ошибка.
Toastify позволяет изменять стили через классы и стили CSS.
Пример кастомного уведомления:
toast("Кастомное уведомление", {
className: "custom-toast",
bodyClassName: "custom-toast-body",
progressClassName: "custom-toast-progress"
});
CSS:
.custom-toast {
background-color: #333;
color: #fff;
font-weight: bold;
}
.custom-toast-body {
font-size: 16px;
}
.custom-toast-progress {
background: linear-gradient(to right, #00f, #0ff);
}
Уведомления можно вызывать из любых компонентов, включая функциональные и классовые. В функциональных компонентах удобно использовать хуки для вызова уведомлений после событий:
function SubmitButton() {
const handleClick = () => {
toast.info("Отправка данных...");
};
return <button onCl ick={handleClick}>Отправить</button>;
}
В классовых компонентах уведомления вызываются напрямую:
class Form extends React.Component {
handleSubmit = () => {
toast.success("Форма отправлена");
};
render() {
return <button onCl ick={this.handleSubmit}>Отправить</button>;
}
}
limit в
ToastContainer ограничивает количество одновременно
отображаемых уведомлений.<ToastContainer
onO pen={() => console.log("Уведомление показано")}
onCl ose={() => console.log("Уведомление скрыто")}
/>
rtl={true}
меняет направление текста на Right-to-Left.toast(<div><strong>Успех!</strong> Данные обновлены.</div>);
Slide, Zoom, Flip,
Bounce.import { Slide } from 'react-toastify';
<ToastContainer transition={Slide} />
success,
error, info) для лучшей визуальной
организации.toast.promise для работы с асинхронными
вызовами — это повышает читаемость кода.toast().Этот набор возможностей делает Toastify универсальным инструментом для управления уведомлениями в React, обеспечивая гибкость, кастомизацию и удобство интеграции с любыми компонентами приложения.