NotificationProvider — это ключевой компонент библиотеки Naive UI для управления уведомлениями в приложениях на Vue 3. Он обеспечивает централизованное создание, отображение и управление уведомлениями, поддерживает различные типы сообщений, приоритеты и конфигурации отображения.
Для использования NotificationProvider необходимо обернуть им корневой компонент приложения или любой контейнер, в котором будут отображаться уведомления:
import { createApp } from 'vue'
import { NNotificationProvider, useNotification } from 'naive-ui'
import App from './App.vue'
const app = createApp({
setup() {
const notification = useNotification()
notification.success({ content: 'Приложение запущено' })
},
render: () => h(App)
})
app.component('NNotificationProvider', NNotificationProvider)
app.mount('#app')
Методы уведомлений делятся на типы сообщений:
const notification = useNotification()
notification.info({ content: 'Информационное сообщение' })
notification.success({ content: 'Успешная операция' })
notification.warning({ content: 'Предупреждение' })
notification.error({ content: 'Ошибка' })
Параметры методов:
0 делает уведомление постоянным.true/false).NotificationProvider позволяет гибко управлять глобальными параметрами уведомлений через пропсы:
<NNotificationProvider
:max="5"
placement="top-right"
:duration="3000"
:keep-alive="true"
/>
Ключевые пропсы:
top-right, top-left,
bottom-right, bottom-left.Каждое уведомление можно закрыть вручную или программно:
const key = notification.success({
title: 'Сохранено',
content: 'Данные успешно сохранены',
duration: 5000
})
// Через 2 секунды закрыть уведомление
setTimeout(() => {
notification.destroy(key)
}, 2000)
Возврат ключа позволяет создавать уведомления с уникальными идентификаторами для последующего управления.
NotificationProvider поддерживает использование компонентов Vue для content, что позволяет вставлять кнопки, изображения или интерактивные элементы:
notification.info({
title: 'Обновление',
content: h('div', [
h('span', 'Новая версия доступна!'),
h('button', { onClick: () => alert('Установлено') }, 'Обновить')
]),
duration: 0
})
duration: 0 делает уведомление постоянным до ручного
закрытия пользователем.С помощью пропса max можно контролировать количество одновременно отображаемых уведомлений. Если лимит превышен, новые уведомления ставятся в очередь.
Пример с динамическим добавлением уведомлений:
for (let i = 0; i < 10; i++) {
notification.info({ content: `Сообщение ${i + 1}` })
}
Если max=3, то одновременно будут показаны только 3
уведомления, остальные появятся по мере закрытия предыдущих.
NotificationProvider наследует тему Naive UI. Можно переопределять цвета, шрифты и отступы через theme overrides:
<NNotificationProvider
:theme-overrides="{
Notification: {
colorInfo: '#2196F3',
colorSuccess: '#4CAF50',
borderRadius: '8px',
fontSize: '14px'
}
}"
/>
keep-alive и
уникальные ключи для управления состоянием.NotificationProvider в Naive UI обеспечивает универсальное решение для уведомлений: гибкое, кастомизируемое и полностью интегрированное с экосистемой Vue 3. Он позволяет создавать информативные, динамичные и управляемые уведомления, минимизируя необходимость писать собственную логику управления отображением сообщений.