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; }
  1. - 修改统一类名前缀
  2. - 修改icon前缀
  3. <a name="Q5Nva"></a>
  4. #### 3.组装全局Config
  5. components/config-provider/index.tsx
  6. <a name="lguXc"></a>
  7. ##### 3.1validateMessages表单默认错误提示模板
  8. components/locale/zh_CN.tsx
  9. 表单默认的校验信息 没有中英版 只是提供一套模板 给表单校验错误提示 可以在组件的实际使用过程中换上多语言。
  10. ```typescript
  11. // 第一层provider
  12. childNode = <RcFormProvider validateMessages={validateMessages}>{children}</RcFormProvider>;

3.2多语言
  1. // 第二层provider
  2. if (locale) {
  3. childNode = (
  4. <LocaleProvider locale={locale} _ANT_MARK__={ANT_MARK}>
  5. {childNode}
  6. </LocaleProvider>
  7. );
  8. }

3.3Size监听

components/config-provider/SizeContext.tsx

  1. // Size Provider
  2. if (componentSize) {
  3. childNode = <SizeContextProvider size={componentSize}>{childNode}</SizeContextProvider>;
  4. }

3.4总Config
  1. // 全局配置Provider
  2. <ConfigContext.Provider value={memoedConfig}>{childNode}</ConfigContext.Provider>;

3.5结合LocaleReceiver=LocaleConsumer
  1. // 最终输出
  2. <LocaleReceiver>
  3. {(_, __, legacyLocale) => (
  4. <ConfigConsumer>
  5. {context => (
  6. <ProviderChildren
  7. parentContext={context}
  8. legacyLocale={legacyLocale as Locale}
  9. {...props}
  10. />
  11. )}
  12. </ConfigConsumer>
  13. )}
  14. </LocaleReceiver>