В библиотеке iziToast событие onClosing
играет ключевую роль при управлении жизненным циклом уведомлений. Оно
срабатывает в момент, когда уведомление начинает закрываться,
предоставляя возможность выполнить действия до того, как элемент будет
полностью удалён из DOM.
Событие передаётся в конфигурационный объект при создании уведомления:
iziToast.show({
title: 'Информация',
message: 'Уведомление закрывается',
onClosing: function(instance, toast, closedBy){
console.log('onClosing сработал', closedBy);
}
});
Параметры функции:
instance — объект iziToast, через который можно
управлять всеми активными уведомлениями.
toast — DOM-элемент уведомления, позволяющий
изменять его стиль, содержимое или анимацию перед закрытием.
closedBy — строка, указывающая причину закрытия
уведомления. Возможные значения:
'timeout' — уведомление закрылось автоматически после
установленного времени.'button' — закрытие произошло через пользовательскую
кнопку.'overlay' — закрытие вызвано кликом по затемнению
(overlay).'programmatic' — уведомление закрыто программно через
метод iziToast.hide().iziToast.show({
title: 'Событие onClosing',
message: 'Проверяем источник закрытия',
timeout: 3000,
onClosing: function(instance, toast, closedBy){
console.log(`Уведомление закрыто методом: ${closedBy}`);
}
});
В консоли можно увидеть, почему уведомление завершило своё существование. Это удобно при аналитике взаимодействия пользователя с уведомлениями.
С помощью toast можно добавлять кастомные эффекты:
iziToast.show({
title: 'Анимация закрытия',
message: 'Сдвигаем уведомление влево перед исчезновением',
timeout: 4000,
onClosing: function(instance, toast, closedBy){
toast.style.transform = 'translateX(-100%)';
toast.style.transition = 'transform 0.5s ease';
}
});
Таким образом, onClosing позволяет добавлять
динамические эффекты, влияя на визуальное восприятие уведомления.
Если уведомление создаёт какие-либо таймеры или подписки, их стоит
очищать в onClosing:
let timer = setInterval(() => console.log('Таймер работает'), 1000);
iziToast.show({
title: 'Очистка ресурсов',
message: 'Таймер остановится при закрытии',
timeout: 5000,
onClosing: function(instance, toast, closedBy){
clearInterval(timer);
console.log('Таймер очищен');
}
});
Это предотвращает утечки памяти при частом использовании уведомлений.
setTimeout внутри
onClosing.toast должны быть плавными, чтобы не нарушить анимацию
закрытия.onClosed:
onClosing срабатывает до удаления
элемента, а onClosed — после. Для логики очистки
ресурсов чаще используют onClosing, а для финальных
действий — onClosed.onClosing всегда срабатывает, даже если уведомление
закрывается программно.closedBy помогает различать пользовательские действия и
автоматические таймеры.onClosing позволяет централизованно управлять событиями, не
создавая дополнительных обработчиков на каждый элемент.Событие onClosing обеспечивает гибкий контроль над
уведомлениями, позволяя интегрировать визуальные эффекты, очистку
ресурсов и анализ поведения пользователя до того, как уведомление
исчезнет с экрана.