1.主要的动能点有
- getTargetContainer:
- getPopupContainer:
- prefixCls: 获取类名前缀
- iconPrefixCls: icon前缀
- children: 子组件
- renderEmpty: 内容为空时的渲染
- csp: csp配置
- autoInsertSpaceInButton: 按钮中间文字是否加空格配置
- form: 表单相关配置
- input: input配置
- locale: 语言
- pageHeader:
- componentSize:
- direction: 全局排布方向配置
- space: 全局配置
- virtual: 是否开启虚拟滚动
- dropdownMatchSelectWidth: select选择框的弹窗宽度与trigger宽度是否保持一致
2.向外暴露config方法
- 主题的颜色根据全局变量获取设置css,所以可以全局修改主题 ```css :root { —prefix-primary-color: #fff; }
- 修改统一类名前缀
- 修改icon前缀
<a name="Q5Nva"></a>
#### 3.组装全局Config
components/config-provider/index.tsx
<a name="lguXc"></a>
##### 3.1validateMessages表单默认错误提示模板
components/locale/zh_CN.tsx
表单默认的校验信息 没有中英版 只是提供一套模板 给表单校验错误提示 可以在组件的实际使用过程中换上多语言。
```typescript
// 第一层provider
childNode = <RcFormProvider validateMessages={validateMessages}>{children}</RcFormProvider>;
3.2多语言
// 第二层provider
if (locale) {
childNode = (
<LocaleProvider locale={locale} _ANT_MARK__={ANT_MARK}>
{childNode}
</LocaleProvider>
);
}
3.3Size监听
components/config-provider/SizeContext.tsx
// Size Provider
if (componentSize) {
childNode = <SizeContextProvider size={componentSize}>{childNode}</SizeContextProvider>;
}
3.4总Config
// 全局配置Provider
<ConfigContext.Provider value={memoedConfig}>{childNode}</ConfigContext.Provider>;
3.5结合LocaleReceiver=LocaleConsumer
// 最终输出
<LocaleReceiver>
{(_, __, legacyLocale) => (
<ConfigConsumer>
{context => (
<ProviderChildren
parentContext={context}
legacyLocale={legacyLocale as Locale}
{...props}
/>
)}
</ConfigConsumer>
)}
</LocaleReceiver>