Naive UI предоставляет мощный инструмент для централизованного управления глобальными настройками компонентов — ConfigProvider. Он позволяет задавать общие параметры для всех компонентов в приложении, обеспечивая единообразие стиля и поведения без необходимости повторять настройки для каждого компонента отдельно.
ConfigProvider — это компонент-обёртка, который принимает объект конфигурации и распространяет его на все дочерние компоненты. Он используется на уровне приложения или на уровне отдельных разделов интерфейса, когда необходимо локализованное переопределение глобальных настроек.
Ключевые свойства ConfigProvider:
theme — глобальная тема для компонентов, включая
цветовую палитру и вариации.locale — объект локализации для текстовых сообщений
компонентов.components — объект с конфигурацией по типу компонентов
для переопределения стандартных параметров.zIndex — базовый уровень слоя для всплывающих
элементов, таких как модальные окна или тултипы.dateLocale — локализация для компонент с датами
(DatePicker, TimePicker).round — глобальный параметр скругления углов
компонентов.Пример базовой структуры:
import { createApp } from 'vue'
import { ConfigProvider, enUS } from 'naive-ui'
import App from './App.vue'
const app = createApp({
render: () => (
<ConfigProvider
theme={{
common: {
primaryColor: '#4caf50',
infoColor: '#2196f3'
}
}}
locale={enUS}
round="12px"
>
<App />
</ConfigProvider>
)
})
app.mount('#app')
Через свойство theme можно определять цвета,
размеры и параметры шрифтов для всех компонентов.
Примеры наиболее часто используемых параметров:
primaryColor — основной цвет приложения.successColor, warningColor,
errorColor — цвета состояния.fontSize — глобальный размер шрифта.borderRadius — скругление по умолчанию для компонентов
с рамками.theme={{
common: {
primaryColor: '#ff5722',
errorColor: '#f44336',
fontSize: '14px',
borderRadius: '8px'
}
}}
Эта настройка автоматически применится ко всем компонентам Naive UI без необходимости переопределять их индивидуально.
Свойство locale позволяет задавать языковые настройки
для компонентов, таких как кнопки подтверждения, диалоги или календарь.
Можно использовать готовые локализации (enUS,
zhCN) или создавать собственные:
const ruLocale = {
global: {
undo: 'Отменить',
redo: 'Повторить',
confirm: 'Подтвердить',
cancel: 'Отмена'
},
datePicker: {
placeholder: 'Выберите дату',
now: 'Сейчас',
confirm: 'Ок'
}
}
<ConfigProvider locale={ruLocale}>
<App />
</ConfigProvider>
Все дочерние компоненты автоматически будут использовать эту локализацию.
Через объект components можно задавать настройки
для каждого типа компонента отдельно. Это позволяет
изменять поведение кнопок, модальных окон, таблиц и других элементов, не
меняя глобальную тему полностью.
Пример настройки для NButton и NDialog:
<ConfigProvider
components={{
NButton: {
size: 'medium',
secondary: true
},
NDialog: {
autoFocus: false,
showIcon: true
}
}}
>
<App />
</ConfigProvider>
NButton.size определяет стандартный размер всех
кнопок.NDialog.autoFocus отключает автоматическое
фокусирование при открытии диалога.Свойство zIndex задаёт базовый уровень отображения для
всплывающих элементов. Это удобно при работе с модальными
окнами, тултипами и поповерами, чтобы избежать перекрытия
важного контента.
<ConfigProvider zIndex={3000}>
<App />
</ConfigProvider>
Naive UI автоматически инкрементирует zIndex для дочерних всплывающих компонентов, исходя из базового значения.
Свойство round задаёт глобальное скругление углов для
всех компонентов, поддерживающих данный параметр. Можно указать в
пикселях или через ключевые значения: 'small',
'medium', 'large'.
<ConfigProvider round="16px">
<App />
</ConfigProvider>
Это упрощает достижение единообразного дизайна без ручного задания
border-radius для каждой кнопки или карточки.
ConfigProvider допускает вложенные провайдеры, что позволяет комбинировать глобальные и локальные настройки. Например, можно задать общую тему для всего приложения, а затем переопределить конкретные параметры для отдельного раздела.
<ConfigProvider theme={{ common: { primaryColor: '#1976d2' } }}>
<MainLayout />
<ConfigProvider
components={{
NButton: { size: 'large', tertiary: true }
}}
>
<SpecialSection />
</ConfigProvider>
</ConfigProvider>
В этом примере SpecialSection использует уникальные
настройки кнопок, сохраняя глобальную тему приложения.
components для тонкой настройки отдельных элементов без
дублирования кода.ConfigProvider в Naive UI — это универсальный инструмент для масштабируемого управления интерфейсом, объединяющий глобальную тему, локализацию и компонентные настройки, который значительно упрощает поддержку крупных приложений.