export default function withProvider()

in packages/form-render-mobile/src/withProvider.tsx [17:89]


export default function withProvider<T>(Element: React.ComponentType<T>): React.FC<FRProps> {
  return (props: any) => {

    const {
      configProvider,
      locale = 'zh-CN',
      widgets,
      methods,
      form,
      validateMessages,
      globalProps = {},
      globalConfig = {},
      ...otherProps
    } = props;

    const storeRef = useRef(createStore());
    const store: any = storeRef.current;

    useEffect(() => {
      if (locale === 'en-US') {
        dayjs.locale('en');
        return;
      }
      dayjs.locale('zh-cn');
    }, [locale]);

    useUnmount(() => {
      form.resetFields();
    });

    if (!form) {
      console.warn('Please provide a form instance to FormRender');
      return null;
    }

    const antdLocale = locale === 'zh-CN' ? zhCN : enUS;
    const formValidateMessages = locale === 'zh-CN' ? validateMessagesCN : validateMessagesEN;

    const configContext = {
      locale,
      widgets: { ...defaultWidgets, ...widgets },
      methods,
      form,
      globalProps,
      globalConfig
    };

    const langPack: any = {
      ...antdLocale,
      "FormRender": locales[locale],
      ...configProvider?.locale
    };

    return (
      <ConfigProvider
        {...configProvider}
        locale={langPack}
        form={{
          validateMessages: {
            ...formValidateMessages,
            ...validateMessages
          }
        }}
      >
        <ConfigContext.Provider value={configContext}>
          <FRContext.Provider value={store}>
            <Element form={form} {...otherProps} />
          </FRContext.Provider>
        </ConfigContext.Provider>
      </ConfigProvider>
    );
  };
}