Для начала работы с библиотекой необходимо установить её через npm или yarn:
npm install react-toastify
# или
yarn add react-toastify
После установки нужно импортировать стили библиотеки в корневой файл
проекта (обычно index.js или App.js):
import 'react-toastify/dist/ReactToastify.css';
Импорт самого компонента ToastContainer и функции уведомлений:
import { ToastContainer, toast } fr om 'react-toastify';
Создание базового уведомления осуществляется через функцию
toast():
toast("Привет! Это уведомление");
Для отображения уведомления необходимо разместить компонент
ToastContainer в корне приложения, обычно внутри компонента
App:
function App() {
return (
<div>
<button onCl ick={() => toast("Уведомление!")}>Показать уведомление</button>
<ToastContainer />
</div>
);
}
React-Toastify поддерживает несколько предустановленных типов уведомлений, позволяющих визуально различать сообщения:
Пример использования типов:
toast.success("Операция выполнена успешно");
toast.error("Произошла ошибка");
toast.info("Это информационное сообщение");
toast.warning("Внимание! Проверьте данные");
toast("Обычное уведомление");
Компонент ToastContainer поддерживает параметр
position, определяющий расположение уведомлений на
экране:
<ToastContainer position="top-right" />
<ToastContainer position="top-center" />
<ToastContainer position="top-left" />
<ToastContainer position="bottom-right" />
<ToastContainer position="bottom-center" />
<ToastContainer position="bottom-left" />
Можно комбинировать несколько параметров, например изменяя отступы
через style:
<ToastContainer style={{ marginTop: "50px" }} />
Время, в течение которого уведомление остаётся видимым, регулируется
параметром autoClose в миллисекундах:
toast("Сообщение закроется через 3 секунды", {
autoClose: 3000
});
Если нужно отключить автоматическое закрытие:
toast("Это уведомление останется до закрытия пользователем", {
autoClose: false
});
React-Toastify предоставляет ряд ключевых настроек:
light,
dark, colored, auto.Пример:
toast("Настроенное уведомление", {
position: "bottom-left",
autoClose: 5000,
hideProgressBar: false,
closeOnClick: true,
pauseOnHover: true,
draggable: true,
theme: "colored"
});
Можно передавать кастомный React-компонент вместо простого текста:
const CustomToast = () => (
<div>
<strong>Важное уведомление!</strong>
<p>Проверьте состояние приложения</p>
</div>
);
toast(<CustomToast />);
Уведомления можно закрывать программно, используя идентификаторы:
const id = toast("Уведомление с ID");
toast.update(id, {
render: "Сообщение обновлено",
type: toast.TYPE.SUCCESS,
autoClose: 2000
});
toast.dismiss(id); // закрытие уведомления
React-Toastify автоматически управляет стеком уведомлений. Для
контроля порядка и количества можно использовать свойства
limit и newestOnTop:
<ToastContainer lim it={3} newestOnTop={true} />
Библиотека позволяет работать с промисами и асинхронными действиями с
помощью toast.promise:
const fetchData = async () => {
await toast.promise(
fetch("/api/data"),
{
pending: "Загрузка данных...",
success: "Данные успешно загружены",
error: "Ошибка при загрузке"
}
);
};
React-Toastify предоставляет события для управления уведомлениями:
Пример использования:
toast("Сообщение с событиями", {
onOpen: () => console.log("Открыто"),
onClose: () => console.log("Закрыто")
});
Для анимации входа и выхода используются свойства
transition и встроенные анимации:
import { Slide, Zoom, Flip, Bounce } from 'react-toastify';
<ToastContainer transition={Slide} />
toast("Сообщение с анимацией Slide");
Можно выбирать из анимаций: Slide, Zoom,
Flip, Bounce или создавать свои кастомные
анимации через библиотеку react-transition-group.
Типизация уведомлений позволяет строго определять параметры:
toast.success<string>("Успех!", {
position: "top-right",
autoClose: 4000
});
Это обеспечивает поддержку автодополнения и строгой проверки типов
при работе с функцией toast.
Для мультиязычных приложений текст уведомлений можно хранить в
объектах локализации и передавать их в toast:
import i18n from './i18n';
toast(i18n.t("notifications.success"));
success,
error, info) для лучшей визуальной
идентификации.