Императивный подход в работе с библиотекой Toastify подразумевает явный вызов функции создания уведомления в момент, когда это требуется логикой приложения. В отличие от декларативных решений, здесь управление полностью сосредоточено в коде: разработчик определяет, когда, где и с какими параметрами будет показано уведомление.
Основной способ создания уведомления — вызов функции
Toastify с объектом конфигурации и последующий запуск
метода .showToast():
Toastify({
text: "Простое уведомление",
duration: 3000
}).showToast();
Ключевые моменты:
text — текст сообщенияduration — время отображения в миллисекундахИмперативность заключается в том, что уведомление появляется строго в момент выполнения этого кода.
Toastify предоставляет гибкие настройки длительности отображения:
Toastify({
text: "Уведомление на 5 секунд",
duration: 5000
}).showToast();
Особенности:
duration: -1 делает уведомление постояннымИмперативное создание позволяет точно контролировать позицию каждого уведомления:
Toastify({
text: "Уведомление сверху справа",
gravity: "top",
position: "right"
}).showToast();
Параметры:
gravity: "top" или
"bottom"position: "left", "center",
"right"Комбинируя параметры, можно добиться нужного UX:
Toastify позволяет задавать стили прямо в конфигурации:
Toastify({
text: "Стилизованное уведомление",
style: {
background: "linear-gradient(to right, #00b09b, #96c93d)",
color: "#fff"
}
}).showToast();
Особенности:
style, аналогичный CSSДля более сложной стилизации применяется className:
Toastify({
text: "Уведомление с классом",
className: "custom-toast"
}).showToast();
CSS:
.custom-toast {
font-size: 16px;
border-radius: 8px;
}
Преимущества:
Императивный подход позволяет напрямую назначать обработчики событий:
Toastify({
text: "Нажми на меня",
onClick: function() {
console.log("Клик по уведомлению");
}
}).showToast();
Сценарии использования:
Toastify поддерживает встроенные ссылки:
Toastify({
text: "Перейти на сайт",
destination: "https://example.com"
}).showToast();
Дополнительно:
newWindow: true — открытие в новой вкладкеToastify({
text: "Открыть в новой вкладке",
destination: "https://example.com",
newWindow: true
}).showToast();
Добавление кнопки закрытия:
Toastify({
text: "Закрываемое уведомление",
close: true
}).showToast();
Особенности:
Для более сложного контента можно использовать HTML:
Toastify({
text: "<b>Жирный текст</b> и <i>курсив</i>",
escapeMarkup: false
}).showToast();
Важно:
escapeMarkup: false разрешает HTMLИмперативные вызовы создают очередь уведомлений:
Toastify({ text: "Первое" }).showToast();
Toastify({ text: "Второе" }).showToast();
Toastify({ text: "Третье" }).showToast();
Поведение:
Параметр oldestFirst управляет порядком:
Toastify({
text: "Новое сверху",
oldestFirst: false
}).showToast();
Значения:
true (по умолчанию) — старые сверхуfalse — новые сверхуМожно сохранять экземпляр и управлять им:
const toast = Toastify({
text: "Удаляемое уведомление",
duration: -1
});
toast.showToast();
// позже
toast.hideToast();
Применение:
Императивный подход особенно полезен при работе с событиями:
button.addEventListener("click", () => {
Toastify({
text: "Кнопка нажата",
duration: 2000
}).showToast();
});
Или при обработке API:
fetch("/api/data")
.then(() => {
Toastify({
text: "Данные успешно загружены",
style: { background: "green" }
}).showToast();
})
.catch(() => {
Toastify({
text: "Ошибка загрузки",
style: { background: "red" }
}).showToast();
});
Для упрощения работы создаются вспомогательные функции:
function showSuccess(message) {
Toastify({
text: message,
duration: 3000,
style: { background: "green" }
}).showToast();
}
function showError(message) {
Toastify({
text: message,
duration: 4000,
style: { background: "red" }
}).showToast();
}
Преимущества:
Императивный стиль позволяет отслеживать состояние операций:
const loadingToast = Toastify({
text: "Загрузка...",
duration: -1
});
loadingToast.showToast();
setTimeout(() => {
loadingToast.hideToast();
Toastify({
text: "Готово",
style: { background: "blue" }
}).showToast();
}, 3000);
Такой подход создаёт ощущение интерактивности интерфейса.
Toastify поддерживает одновременное использование всех настроек:
Toastify({
text: "Полностью настроенное уведомление",
duration: 4000,
gravity: "bottom",
position: "left",
close: true,
className: "info-toast",
style: {
background: "#333",
color: "#fff"
},
onClick: () => console.log("Клик")
}).showToast();
Это демонстрирует главную особенность императивного подхода — полный контроль над поведением уведомлений в каждой конкретной точке выполнения программы.