|
|
@@ -31,6 +31,15 @@ export type FormProps<TValues> = FormOptions & {
|
|
|
control?: FormControl<TValues>;
|
|
|
};
|
|
|
|
|
|
+/**
|
|
|
+ * `FormContentRender` allows you to write `useWatch` to `formMeta.render`
|
|
|
+ */
|
|
|
+function FormContentRender(
|
|
|
+ props: { render: (props: FormRenderProps<any>) => React.ReactNode } & FormRenderProps<any>
|
|
|
+): JSX.Element {
|
|
|
+ const { form, render } = props;
|
|
|
+ return <>{render({ form })}</>;
|
|
|
+}
|
|
|
/**
|
|
|
* Hoc That init and provide Form instance. You can also provide form instance from outside by using control prop
|
|
|
* @param props
|
|
|
@@ -56,7 +65,13 @@ export function Form<TValues>(props: FormProps<TValues>) {
|
|
|
|
|
|
return (
|
|
|
<FormModelContext.Provider value={formModel}>
|
|
|
- {children ? (isFunction(children) ? children({ form }) : Children.only(children)) : null}
|
|
|
+ {children ? (
|
|
|
+ isFunction(children) ? (
|
|
|
+ <FormContentRender form={form} render={children} />
|
|
|
+ ) : (
|
|
|
+ Children.only(children)
|
|
|
+ )
|
|
|
+ ) : null}
|
|
|
</FormModelContext.Provider>
|
|
|
);
|
|
|
}
|