В библиотеке Ant Design для управления уведомлениями
используется компонент notification. Он позволяет создавать
системные уведомления с настраиваемым контентом, временем отображения и
позицией на экране. В некоторых случаях возникает необходимость
ограничить количество одновременно отображаемых уведомлений, чтобы
интерфейс оставался чистым и не перегружался визуально. Ant Design
предоставляет для этого встроенные механизмы.
notificationКомпонент notification предоставляет несколько
методов:
notification.open(config) – открывает
уведомление с указанной конфигурацией.notification.info(config),
notification.success(config),
notification.warning(config),
notification.error(config) – открывают
уведомления с предопределенным стилем.notification.close(key) – закрывает
уведомление по ключу.notification.destroy() – закрывает все
уведомления.Каждое уведомление может иметь уникальный key, что
позволяет управлять отдельными уведомлениями и предотвращать
дублирование.
Ant Design поддерживает глобальную настройку максимального количества
отображаемых уведомлений через метод
notification.config. Ключевое свойство для
ограничения количества уведомлений:
import { notification } from 'antd';
notification.config({
maxCount: 3, // Максимальное количество уведомлений на экране
});
Пояснение ключевых параметров:
maxCount – число уведомлений, которое может
одновременно отображаться. Если вызывается
notification.open при достижении лимита, самое старое
уведомление автоматически закрывается, уступая место новому.duration – время, через которое уведомление
автоматически исчезнет (в секундах). По умолчанию 4.5.placement – позиция уведомления на экране
(topLeft, topRight, bottomLeft,
bottomRight).Пример с duration и placement:
notification.config({
maxCount: 2,
duration: 3,
placement: 'topRight',
});
В этом примере одновременно могут отображаться только два уведомления в правом верхнем углу, каждое исчезнет через 3 секунды.
Каждое уведомление можно идентифицировать через параметр
key. Это особенно важно при динамическом отображении
сообщений:
const key = `open${Date.now()}`;
notification.open({
message: 'Системное уведомление',
description: 'Пример ограничения количества уведомлений',
key,
});
Использование key позволяет:
notification.close(key).notification.open({ key, ... }).При ограничении количества уведомлений старые сообщения автоматически исчезают, но можно управлять этим вручную, если требуется дополнительная логика:
let notifications = [];
function showNotification(message) {
const key = `notif_${Date.now()}`;
if (notifications.length >= 3) {
const oldestKey = notifications.shift();
notification.close(oldestKey);
}
notifications.push(key);
notification.open({
message,
key,
});
}
В этом примере реализована очередь FIFO (First In, First Out): когда достигается лимит в 3 уведомления, старейшее закрывается перед отображением нового.
Для приложений с большим количеством динамических уведомлений иногда
полезно создавать обертку вокруг notification, которая
будет централизованно управлять количеством и временем жизни
сообщений:
class NotificationManager {
constructor(maxCount = 3) {
this.maxCount = maxCount;
this.notifications = [];
}
show(message, duration = 4.5) {
const key = `notif_${Date.now()}`;
if (this.notifications.length >= this.maxCount) {
const oldest = this.notifications.shift();
notification.close(oldest);
}
this.notifications.push(key);
notification.open({
message,
key,
duration,
});
}
}
const manager = new NotificationManager(3);
manager.show('Новое уведомление');
Такой подход позволяет централизованно управлять уведомлениями во всех частях приложения, не дублируя логику в разных компонентах.