Ir al contenido

ConfigProvider

Proveedor de contexto para configuración global. Permite un tamaño de componentes consistente, localización, soporte RTL y gestión de contenedores de portales en toda tu aplicación.

import { ConfigProvider, useConfig } from 'asterui'

Envuelve tu aplicación con ConfigProvider para establecer valores predeterminados globales:

main.tsx
import { ConfigProvider } from 'asterui'
createRoot(document.getElementById('root')!).render(
<ConfigProvider componentSize="sm">
<App />
</ConfigProvider>
)

Establece un tamaño global para todos los componentes. Los componentes individuales aún pueden anularlo:

function App() {
const [size, setSize] = useState<'xs' | 'sm' | 'md' | 'lg' | 'xl'>('md')
return (
<ConfigProvider componentSize={size}>
<div className="space-y-4">
<select value={size} onChange={(e) => setSize(e.target.value)}>
<option value="xs">Extra Small</option>
<option value="sm">Small</option>
<option value="md">Medium</option>
<option value="lg">Large</option>
<option value="xl">Extra Large</option>
</select>
{/* Todos estos componentes usarán el tamaño global */}
<Button>Button</Button>
<Input placeholder="Input" />
<Pagination total={100} />
</div>
</ConfigProvider>
)
}

Personaliza las cadenas de locale para internacionalización:

import { ConfigProvider } from 'asterui'
import { zhCN } from 'asterui/locale'
// Usar un locale integrado
<ConfigProvider locale={zhCN}>
<App />
</ConfigProvider>
// O proporcionar cadenas personalizadas
<ConfigProvider locale={{ Empty: { description: 'Keine Daten' } }}>
<Empty />
</ConfigProvider>

Habilita el diseño de derecha a izquierda para idiomas como árabe y hebreo:

<ConfigProvider direction="rtl">
<div dir="rtl">
<Button>Primero</Button>
<Button>Segundo</Button>
<Button>Tercero</Button>
</div>
</ConfigProvider>

Los componentes ConfigProvider anidados heredan y anulan las configuraciones del padre:

<ConfigProvider componentSize="lg">
<Button>Botón grande</Button>
<ConfigProvider componentSize="sm">
{/* Esta sección usa tamaño pequeño */}
<Button>Botón pequeño</Button>
</ConfigProvider>
</ConfigProvider>

Especifica dónde se renderizan los modales, desplegables y otros portales:

<ConfigProvider getPopupContainer={() => document.getElementById('modal-root')!}>
<Modal open={isOpen}>
{/* Se renderiza dentro de #modal-root en lugar de document.body */}
</Modal>
</ConfigProvider>
PropiedadTipoPredeterminadoDescripción
localeLocaleenUSObjeto de configuración de locale.
componentSize'xs' | 'sm' | 'md' | 'lg' | 'xl''md'Tamaño predeterminado para todos los componentes.
direction'ltr' | 'rtl''ltr'Dirección del diseño.
prefixClsstring-Prefijo para clases CSS.
getPopupContainer(triggerNode?: HTMLElement) => HTMLElement-Contenedor predeterminado para portales.
childrenReact.ReactNode-Componentes hijos.
PropiedadTipoDescripción
localeLocaleConfiguración de locale actual.
componentSizestringTamaño global de componentes actual.
direction'ltr' | 'rtl'Dirección de diseño actual.
getPopupContainerfunctionFunción de contenedor de portales actual.
import { useConfig } from 'asterui'
function MyComponent() {
const { locale, componentSize, direction } = useConfig()
// Usar valores de configuración...
}

Accede solo al locale actual:

import { useLocale } from 'asterui'
function MyComponent() {
const locale = useLocale()
// Usar cadenas de locale...
}

Importa locales desde asterui/locale:

import { zhCN, jaJP, koKR, deDE, frFR, esES, ptBR, enGB, enCA } from 'asterui/locale'
LocaleIdioma
enUSInglés (EE.UU.) - predeterminado
enGBInglés (Reino Unido)
enCAInglés (Canadá)
zhCNChino (Simplificado)
jaJPJaponés
koKRCoreano
deDEAlemán
frFRFrancés
esESEspañol
ptBRPortugués (Brasil)
  • Usa direction="rtl" para idiomas de derecha a izquierda como árabe y hebreo
  • Las configuraciones de locale afectan el texto del lector de pantalla en componentes como Empty, Pagination, etc.
  • Los proveedores anidados permiten que diferentes regiones de tu aplicación tengan diferentes configuraciones