ant-design/components/config-provider/index.en-US.md
叶枫 8950642664
feat: config support holderRender (#46596)
* feat: config support container

* feat: add test

* feat: reset demo

* feat: test

* feat: test

* feat: test

* feat: test

* feat: md

* feat: limit

* fix: prefix

* feat: limit

* feat: message support app config

* feat: notification support app config

* feat: add maxCount test

* feat: icons

* feat: 增加 2 个 todo

* feat: holderRender

* feat: md

* feat: message 兼容旧逻辑

* feat: notification 兼容完成

* feat: modal 兼容完成

* feat: 优化 modal

* feat: 优化代码

* feat: 优化代码

* feat: 给 CP 添加 demo

* feat: 优先级完成/demo迁移完成

* feat: review

* feat: review

* feat: 优化 modal 代码

* feat: 支持 rtl

* feat: 修改注释

* feat: 优化单测

* feat: 优先级注释

* feat: remove getPrefixCls

* feat: demo

* feat: demo

* feat: demo

---------

Co-authored-by: MadCcc <madccc@foxmail.com>
2024-01-02 17:43:27 +08:00

13 KiB

category group title cover coverDark
Components Other ConfigProvider https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*NVKORa7BCVwAAAAAAAAAAAAADrJ8AQ/original https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*YC4ERpGAddoAAAAAAAAAAAAADrJ8AQ/original

ConfigProvider provides a uniform configuration support for components.

Usage

This component provides a configuration to all React components underneath itself via the context API. In the render tree all components will have access to the provided config.

import React from 'react';
import { ConfigProvider } from 'antd';

// ...
const Demo: React.FC = () => (
  <ConfigProvider direction="rtl">
    <App />
  </ConfigProvider>
);

export default Demo;

Content Security Policy

Some components use dynamic style to support wave effect. You can config csp prop if Content Security Policy (CSP) is enabled:

<ConfigProvider csp={{ nonce: 'YourNonceCode' }}>
  <Button>My Button</Button>
</ConfigProvider>

Examples

Locale Direction Component size Theme Custom Wave Static function prefixCls useConfig warning

API

Property Description Type Default Version
autoInsertSpaceInButton Set false to remove space between 2 chinese characters on Button boolean true
componentDisabled Config antd component disabled boolean - 4.21.0
componentSize Config antd component size small | middle | large -
csp Set Content Security Policy config { nonce: string } -
direction Set direction of layout. See demo ltr | rtl ltr
getPopupContainer To set the container of the popup element. The default is to create a div element in body function(triggerNode) () => document.body
getTargetContainer Config Affix, Anchor scroll target container () => HTMLElement () => window 4.2.0
iconPrefixCls Set icon prefix className string anticon 4.11.0
locale Language package setting, you can find the packages in antd/locale object -
popupMatchSelectWidth Determine whether the dropdown menu and the select input are the same width. Default set min-width same as input. Will ignore when value less than select width. false will disable virtual scroll boolean | number - 5.5.0
popupOverflow Select like component popup logic. Can set to show in viewport or follow window scroll 'viewport' | 'scroll' 'viewport' 5.5.0
prefixCls Set prefix className string ant
renderEmpty Set empty content of components. Ref Empty function(componentName: string): ReactNode -
theme Set theme, ref Customize Theme Theme - 5.0.0
virtual Disable virtual scroll when set to false boolean - 4.3.0
warning Config warning level, when strict is false, it will aggregate deprecated information into a single message { strict: boolean } - 5.10.0

ConfigProvider.config()

Setting ModalMessageNotification static config. Not work on hooks.

ConfigProvider.config({
// 5.13.0+
  holderRender: (children) => <ConfigProvider prefixCls="ant" iconPrefixCls='anticon' theme={{token: { colorPrimary: 'red' }}}>{children}</ConfigProvider>
});

ConfigProvider.useConfig() 5.3.0+

Available since 5.2.0. Get the value of the parent Provider. Such as DisabledContextProvider, SizeContextProvider.

const {
  componentDisabled, // 5.3.0+
  componentSize, // 5.3.0+
} = ConfigProvider.useConfig();
Property Description Type Default Version
componentDisabled antd component disabled state boolean - 5.3.0
componentSize antd component size state small | middle | large - 5.3.0

Component Config

Property Description Type Default Version
alert Set Alert common props { className?: string, style?: React.CSSProperties } - 5.7.0
anchor Set Anchor common props { className?: string, style?: React.CSSProperties } - 5.7.0
avatar Set Avatar common props { className?: string, style?: React.CSSProperties } - 5.7.0
badge Set Badge common props { className?: string, style?: React.CSSProperties, classNames?: { count?: string, indicator?: string }, styles?: { count?: React.CSSProperties, indicator?: React.CSSProperties } } - 5.7.0
breadcrumb Set Breadcrumb common props { className?: string, style?: React.CSSProperties } - 5.7.0
button Set Button common props { className?: string, style?: React.CSSProperties, classNames?: { icon: string }, styles?: { icon: React.CSSProperties } } - 5.6.0
card Set Card common props { className?: string, style?: React.CSSProperties } - 5.7.0
calendar Set Calendar common props { className?: string, style?: React.CSSProperties } - 5.7.0
carousel Set Carousel common props { className?: string, style?: React.CSSProperties } - 5.7.0
cascader Set Cascader common props { className?: string, style?: React.CSSProperties } - 5.7.0
checkbox Set Checkbox common props { className?: string, style?: React.CSSProperties } - 5.7.0
collapse Set Collapse common props { className?: string, style?: React.CSSProperties } - 5.7.0
colorPicker Set ColorPicker common props { className?: string, style?: React.CSSProperties } - 5.7.0
datePicker Set datePicker common props { className?: string, style?: React.CSSProperties } - 5.7.0
rangePicker Set rangePicker common props { className?: string, style?: React.CSSProperties } - 5.11.0
descriptions Set Descriptions common props { className?: string, style?: React.CSSProperties } - 5.7.0
divider Set Divider common props { className?: string, style?: React.CSSProperties } - 5.7.0
drawer Set Drawer common props { className?: string, style?: React.CSSProperties, classNames?: DrawerProps["classNames"], styles?: DrawerProps["styles"] } - 5.7.0, classNames and styles: 5.10.0
dropdown Set Dropdown common props { className?: string, style?: React.CSSProperties } - 5.11.0
empty Set Empty common props { className?: string, style?: React.CSSProperties } - 5.7.0
flex Set Flex common props { className?: string, style?: React.CSSProperties, vertical?: boolean } - 5.10.0
form Set Form common props { className?: string, style?: React.CSSProperties, validateMessages?: ValidateMessages, requiredMark?: boolean | optional, scrollToFirstError?: boolean | Options } - requiredMark: 4.8.0; colon: 4.18.0; scrollToFirstError: 5.2.0; className: 5.7.0; style: 5.7.0
image Set Image common props { className?: string, style?: React.CSSProperties } - 5.7.0
input Set Input common props { autoComplete?: string, className?: string, style?: React.CSSProperties } - 4.2.0
layout Set Layout common props { className?: string, style?: React.CSSProperties } - 5.7.0
list Set List common props { className?: string, style?: React.CSSProperties } - 5.7.0
menu Set Menu common props { className?: string, style?: React.CSSProperties } - 5.7.0
mentions Set Mentions common props { className?: string, style?: React.CSSProperties } - 5.7.0
message Set Message common props { className?: string, style?: React.CSSProperties } - 5.7.0
modal Set Modal common props { className?: string, style?: React.CSSProperties, classNames?: ModalProps["classNames"], styles?: ModalProps["styles"] } - 5.7.0, classNames and styles: 5.10.0
notification Set Notification common props { className?: string, style?: React.CSSProperties } - 5.7.0
pagination Set Pagination common props { showSizeChanger?: boolean, className?: string, style?: React.CSSProperties } - 5.7.0
progress Set Progress common props { className?: string, style?: React.CSSProperties } - 5.7.0
radio Set Radio common props { className?: string, style?: React.CSSProperties } - 5.7.0
rate Set Rate common props { className?: string, style?: React.CSSProperties } - 5.7.0
result Set Result common props { className?: string, style?: React.CSSProperties } - 5.7.0
skeleton Set Skeleton common props { className?: string, style?: React.CSSProperties } - 5.7.0
segmented Set Segmented common props { className?: string, style?: React.CSSProperties } - 5.7.0
select Set Select common props { className?: string, showSearch?: boolean, style?: React.CSSProperties } - 5.7.0
slider Set Slider common props { className?: string, style?: React.CSSProperties } - 5.7.0
switch Set Switch common props { className?: string, style?: React.CSSProperties } - 5.7.0
space Set Space common props, ref Space { size: small | middle | large | number, className?: string, style?: React.CSSProperties, classNames?: { item: string }, styles?: { item: React.CSSProperties } } - 5.6.0
spin Set Spin common props { className?: string, style?: React.CSSProperties } - 5.7.0
statistic Set Statistic common props { className?: string, style?: React.CSSProperties } - 5.7.0
steps Set Steps common props { className?: string, style?: React.CSSProperties } - 5.7.0
table Set Table common props { className?: string, style?: React.CSSProperties } - 5.7.0
tabs Set Tabs common props { className?: string, style?: React.CSSProperties } - 5.7.0
tag Set Tag common props { className?: string, style?: React.CSSProperties } - 5.7.0
timeline Set Timeline common props { className?: string, style?: React.CSSProperties } - 5.7.0
timePicker Set TimePicker common props { className?: string, style?: React.CSSProperties } - 5.7.0
transfer Set Transfer common props { className?: string, style?: React.CSSProperties } - 5.7.0
tree Set Tree common props { className?: string, style?: React.CSSProperties } - 5.7.0
typography Set Typography common props { className?: string, style?: React.CSSProperties } - 5.7.0
upload Set Upload common props { className?: string, style?: React.CSSProperties } - 5.7.0
wave Config wave effect { disabled?: boolean, showEffect?: (node: HTMLElement, info: { className, token, component }) => void } - 5.8.0

FAQ

How to contribute a new language?

See <Adding new language>.

See FAQ Date-related-components-locale-is-not-working?

Modal throw error when setting getPopupContainer?

Related issue: https://github.com/ant-design/ant-design/issues/19974

When you config getPopupContainer to parentNode globally, Modal will throw error of triggerNode is undefined because it did not have a triggerNode. You can try the fix below.

 <ConfigProvider
-  getPopupContainer={triggerNode => triggerNode.parentNode}
+  getPopupContainer={node => {
+    if (node) {
+      return node.parentNode;
+    }
+    return document.body;
+  }}
 >
   <App />
 </ConfigProvider>

Why can't ConfigProvider props (like prefixCls and theme) affect ReactNode inside message.info, notification.open, Modal.confirm?

antd will dynamic create React instance by ReactDOM.render when call message methods. Whose context is different with origin code located context. We recommend useMessage, useNotification and useModal which , the methods came from message/notification/Modal has been deprecated in 5.x.

Locale is not working with Vite in production mode?

Related issue: #39045

In production mode of Vite, default exports from cjs file should be used like this: enUS.default. So you can directly import locale from es/ directory like import enUS from 'antd/es/locale/en_US' to make dev and production have the same behavior.

prefixCls priority(The former is covered by the latter)

  1. ConfigProvider.config({ prefixCls: 'prefix-1' })
  2. ConfigProvider.config({ holderRender: (children) => <ConfigProvider prefixCls="prefix-2">{children}</ConfigProvider> })
  3. message.config({ prefixCls: 'prefix-3' })