Библиотека iziToast предоставляет гибкие возможности для отображения уведомлений в веб-приложениях, но при интенсивном использовании возникает необходимость контроля количества одновременно отображаемых уведомлений. Несколько одновременно появляющихся уведомлений могут перегрузить интерфейс и ухудшить пользовательский опыт. Для этого в библиотеке предусмотрены механизмы ограничения их числа.
Основной способ управления количеством уведомлений — использование
глобальной настройки maxWidth и maxVisible.
Однако в контексте ограничения именно количества уведомлений ключевой
параметр — limit. Он задается при
инициализации или при вызове уведомления:
iziToast.settings({
timeout: 5000,
position: 'topRight',
limit: 3
});
В этом примере одновременно на экране не будет больше трёх уведомлений. Любое последующее уведомление будет либо помещено в очередь, либо не показано в зависимости от настроек очереди.
Важно: параметр limit применяется ко
всем уведомлениям глобально, если не указан индивидуальный
limit при создании конкретного уведомления.
Вызов отдельного уведомления может содержать собственный лимит, который будет перекрывать глобальный:
iziToast.show({
title: 'Ошибка',
message: 'Произошла ошибка при загрузке данных',
color: 'red',
limit: 1
});
Это гарантирует, что для данного типа уведомления на экране будет отображаться только одно сообщение одновременно, независимо от глобальных настроек.
При превышении установленного лимита возможны несколько вариантов обработки:
override с уникальными идентификаторами
уведомлений, чтобы новое уведомление заменяло старое с тем же
id.Пример с уникальными id:
iziToast.show({
id: 'uniqueNotification',
title: 'Обновление',
message: 'Новая версия доступна',
timeout: 4000
});
Если уведомление с id: 'uniqueNotification' уже
отображается, новый вызов заменит старое уведомление вместо добавления
нового.
Для комплексного контроля часто используют очередь
уведомлений, имитируя собственную очередь через массивы или
встроенные callback-функции onClosing и
onClosed:
let queue = [
{ title: 'Сообщение 1', message: 'Первое уведомление' },
{ title: 'Сообщение 2', message: 'Второе уведомление' },
{ title: 'Сообщение 3', message: 'Третье уведомление' },
];
function showNext() {
if (queue.length === 0) return;
const item = queue.shift();
iziToast.show({
title: item.title,
message: item.message,
onClosed: showNext
});
}
showNext();
Такой подход позволяет обеспечить строгое соблюдение лимита, управлять порядком показа уведомлений и не перегружать интерфейс.
id и limit, чтобы гарантированно
появляться.timeout для
автоматического закрытия уведомлений, чтобы очередь не
блокировалась.iziToast.settings({
position: 'topRight',
timeout: 4000,
limit: 4
});
iziToast.success({
title: 'Успех',
message: 'Данные успешно сохранены',
});
iziToast.error({
id: 'error1',
title: 'Ошибка',
message: 'Не удалось загрузить данные',
limit: 1
});
iziToast.info({
title: 'Информация',
message: 'Доступна новая версия',
});
В этом примере глобальный лимит 4 уведомления одновременно работает вместе с индивидуальным лимитом для уведомления об ошибке, что обеспечивает гибкий контроль отображения сообщений.