Для начала работы с библиотекой Toastify необходимо подключить её к проекту. Есть два способа: через CDN или с использованием пакетного менеджера npm.
Подключение через CDN:
Установка через npm:
npm install toastify-js
В проекте с модульной системой можно импортировать библиотеку следующим образом:
import Toastify from 'toastify-js';
import "toastify-js/src/toastify.css";
Базовый пример использования Toastify выглядит так:
Toastify({
text: "Сообщение успешно отправлено",
duration: 3000
}).showToast();
Пояснение ключевых параметров:
text — текст уведомления.duration — время отображения уведомления в
миллисекундах. Если указать -1, уведомление останется до
закрытия вручную.Toastify позволяет гибко настраивать внешний вид уведомлений:
Toastify({
text: "Пример уведомления",
duration: 3000,
gravity: "top", // 'top' или 'bottom'
position: "right" // 'left', 'center', 'right'
}).showToast();
Toastify({
text: "Успешная операция",
duration: 3000,
style: {
background: "linear-gradient(to right, #00b09b, #96c93d)",
color: "#fff",
fontWeight: "bold"
}
}).showToast();
Toastify({
text: "Сообщение с кнопкой закрытия",
close: true,
duration: 5000
}).showToast();
Toastify позволяет работать с событиями уведомления, что удобно для динамических интерфейсов.
Toastify({
text: "Кликни по мне",
duration: 4000,
onClick: function() {
console.log("Уведомление было кликнуто");
}
}).showToast();
Toastify({
text: "Закрытие вручную",
duration: -1
}).showToast();
При создании большого количества уведомлений важно контролировать их количество и предотвращать утечки памяти:
const toastInstances = [];
function createToast(message) {
const toast = Toastify({
text: message,
duration: 3000
});
toast.showToast();
toastInstances.push(toast);
}
toastInstances.forEach(toast => {
toast.onCl ose = function() {
const index = toastInstances.indexOf(toast);
if (index > -1) toastInstances.splice(index, 1);
};
});
Чтобы не перегружать интерфейс, можно ограничить количество одновременно отображаемых уведомлений:
const MAX_TOASTS = 5;
function createLimitedToast(message) {
if (toastInstances.length >= MAX_TOASTS) {
const oldestToast = toastInstances.shift();
oldestToast.hideToast(); // скроет уведомление
}
createToast(message);
}
Toastify поддерживает базовые CSS-анимации при появлении и скрытии уведомлений. Для сложных эффектов можно использовать кастомные классы:
Toastify({
text: "Анимированное уведомление",
duration: 3000,
className: "my-toast-animation"
}).showToast();
.my-toast-animation {
animation: slideIn 0.5s ease forwards, fadeOut 0.5s ease 2.5s forwards;
}
@keyframes slideIn {
from { transform: translateX(100%); opacity: 0; }
to { transform: translateX(0); opacity: 1; }
}
@keyframes fadeOut {
to { opacity: 0; }
}
Уведомления можно использовать для оповещения о результатах асинхронных операций, например, запросов к API:
async function fetchData() {
try {
const response = await fetch("/api/data");
if (!response.ok) throw new Error("Ошибка запроса");
Toastify({ text: "Данные успешно загружены", duration: 3000 }).showToast();
} catch (err) {
Toastify({
text: `Ошибка: ${err.message}`,
duration: 5000,
style: { background: "red", color: "#fff" }
}).showToast();
}
}
Для единообразного интерфейса удобно создавать функции-шаблоны:
function showSuccessToast(message) {
Toastify({
text: message,
duration: 3000,
style: { background: "green", color: "#fff" }
}).showToast();
}
function showErrorToast(message) {
Toastify({
text: message,
duration: 5000,
style: { background: "red", color: "#fff" }
}).showToast();
}
Такой подход уменьшает дублирование кода и снижает вероятность ошибок при управлении уведомлениями.