Для работы с библиотекой Toastify необходимо подключить её в проект. В браузерной среде это делается через CDN:
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css">
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/toastify-js"></script>
В средах с использованием сборщиков модулей (Webpack, Vite, Parcel) рекомендуется установка через npm:
npm install toastify-js
Импорт в модуле Jav * aScript:
import Toastify from 'toastify-js';
import "toastify-js/src/toastify.css";
Создание базового уведомления осуществляется вызовом метода
Toastify() с объектом конфигурации и последующим вызовом
.showToast():
Toastify({
text: "Привет, это уведомление",
duration: 3000,
close: true
}).showToast();
Ключевые параметры:
text — текст уведомления.duration — время отображения в миллисекундах. Значение
-1 делает уведомление постоянным.close — отображение кнопки закрытия.gravity — положение по вертикали ("top"
или "bottom").position — горизонтальное положение
("left", "center", "right").backgroundColor — цвет фона уведомления.stopOnFocus — остановка таймера при наведении
курсора.Цвет и стиль уведомления:
Toastify({
text: "Ошибка при загрузке данных",
duration: 5000,
close: true,
gravity: "top",
position: "right",
backgroundColor: "#ff6b6b",
style: {
fontWeight: "bold",
fontSize: "14px",
borderRadius: "8px"
}
}).showToast();
Можно комбинировать backgroundColor с CSS-свойством
style для более гибкого оформления, включая тени, анимации
и шрифты.
Использование градиентов и изображений:
Toastify({
text: "Скачивание завершено",
duration: 4000,
gravity: "bottom",
position: "center",
backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)",
avatar: "icon-success.png",
stopOnFocus: true
}).showToast();
avatar позволяет добавить иконку слева от текста, что
помогает при визуальной приоритизации уведомлений.
Toastify позволяет визуально различать важность уведомлений с помощью:
gravity: "top"), менее важные —
внизу.duration: 5000-8000),
второстепенная — меньше (duration: 2000-3000).const notifications = [
{ text: "Ошибка сервера", type: "error" },
{ text: "Файл загружен", type: "success" },
{ text: "Срок действия сессии скоро истечет", type: "warning" }
];
notifications.forEach(note => {
let bgColor;
switch(note.type) {
case "error": bgColor = "#ff4d4f"; break;
case "success": bgColor = "#52c41a"; break;
case "warning": bgColor = "#faad14"; break;
}
Toastify({
text: note.text,
duration: 5000,
close: true,
gravity: "top",
position: "right",
backgroundColor: bgColor,
stopOnFocus: true,
style: { fontWeight: "bold" }
}).showToast();
});
В случаях большого количества сообщений важно управлять их порядком и видимостью. Toastify не имеет встроенной очереди, но можно реализовать собственную:
const queue = [];
let isShowing = false;
function showNext() {
if(queue.length === 0) {
isShowing = false;
return;
}
isShowing = true;
const next = queue.shift();
Toastify(next).showToast();
setTimeout(showNext, next.duration || 3000);
}
function enqueueNotification(config) {
queue.push(config);
if(!isShowing) showNext();
}
enqueueNotification({ text: "Первое уведомление", duration: 3000 });
enqueueNotification({ text: "Второе уведомление", duration: 4000 });
Таким образом, можно гарантировать, что уведомления отображаются последовательно, при этом приоритет отображения определяется порядком добавления в очередь и параметрами конфигурации.
Для расширенного контроля можно использовать события:
onClick — обработка клика по уведомлению.callback — вызывается после завершения таймера
отображения.Toastify({
text: "Нажми для действия",
duration: 5000,
close: true,
onClick: () => console.log("Уведомление кликнуто"),
callback: () => console.log("Уведомление скрыто")
}).showToast();
Эти события позволяют динамически изменять интерфейс, реагировать на пользовательские действия и дополнительно сортировать уведомления по важности.
При работе с сетевыми запросами и длительными операциями уведомления Toastify помогают приоритизировать критическую информацию:
async function fetchData() {
enqueueNotification({ text: "Загрузка данных...", duration: 3000, backgroundColor: "#1890ff" });
try {
const response = await fetch("/api/data");
if(!response.ok) throw new Error("Ошибка сервера");
enqueueNotification({ text: "Данные загружены успешно", duration: 4000, backgroundColor: "#52c41a" });
} catch(err) {
enqueueNotification({ text: err.message, duration: 5000, backgroundColor: "#ff4d4f" });
}
}
Такая схема позволяет поддерживать визуальную иерархию уведомлений и своевременно информировать пользователя о критических событиях.