Библиотека Toastify предоставляет удобный способ управления уведомлениями в веб-приложениях. Помимо стандартного показа тостов, важно уметь удалять конкретные уведомления, чтобы поддерживать чистоту интерфейса и управлять пользовательским опытом.
В отличие от простого вызова
Toastify({...}).showToast(), для последующего удаления
уведомления необходимо сохранять его экземпляр.
const toast = Toastify({
text: "Это уведомление, которое можно удалить",
duration: 5000, // время отображения в миллисекундах
close: true, // отображение кнопки закрытия
gravity: "top",
position: "right",
}).showToast();
В переменной toast хранится объект с DOM-элементом
уведомления, через который можно управлять его состоянием.
1. Автоматическое скрытие через duration По
умолчанию Toastify скрывает уведомление через заданное время
duration. Однако иногда требуется удалять уведомление
раньше, чем истечет время отображения.
2. Удаление вручную с помощью remove()
Каждое уведомление, созданное через Toastify, имеет доступ к внутреннему
DOM-элементу, через который можно вызвать метод
remove().
// Удаление через 2 секунды после создания
setTimeout(() => {
toast.toastElement.remove();
}, 2000);
Здесь toast.toastElement — это ссылка на DOM-элемент
уведомления, а метод remove() удаляет его из DOM.
Если требуется предоставить пользователю возможность закрыть
уведомление вручную, можно использовать опцию close: true.
Toastify автоматически добавляет кнопку закрытия, которая вызывает
удаление уведомления из DOM.
Toastify({
text: "Нажмите крестик, чтобы закрыть",
close: true,
gravity: "bottom",
position: "left",
}).showToast();
При этом каждый клик по кнопке выполняет внутренний вызов
remove() на соответствующем элементе.
В более сложных сценариях необходимо удалять уведомления программно в зависимости от состояния приложения. Например, если уведомление связано с определённым идентификатором задачи:
const notifications = [];
function showTaskNotification(taskId, message) {
const toast = Toastify({
text: message,
close: true,
gravity: "top",
position: "right",
}).showToast();
notifications.push({ taskId, toast });
}
// Удаление уведомления для конкретной задачи
function removeTaskNotification(taskId) {
const index = notifications.findIndex(n => n.taskId === taskId);
if (index !== -1) {
notifications[index].toast.toastElement.remove();
notifications.splice(index, 1);
}
}
Использование массива объектов с taskId позволяет
целенаправленно управлять отдельными уведомлениями, не затрагивая
остальные.
Toastify поддерживает плавное исчезновение уведомлений через
CSS-переходы. При ручном вызове remove() можно добавить
анимацию, чтобы уведомление исчезало постепенно:
.toastify-remove {
opacity: 0;
transition: opacity 0.5s ease-out;
}
function removeWithAnimation(toast) {
toast.toastElement.classList.add("toastify-remove");
setTimeout(() => {
toast.toastElement.remove();
}, 500); // соответствует времени CSS transition
}
Этот подход позволяет улучшить визуальное восприятие удаления уведомлений, делая интерфейс более плавным и приятным.
close: true — упрощает
ручное удаление через кнопку пользователя.Удаление конкретного уведомления в Toastify — это сочетание сохранения экземпляра, прямого управления DOM и опциональной анимации, что обеспечивает гибкость и контроль над интерфейсом.