feat: form context provider

This commit is contained in:
chenos 2022-12-22 21:37:17 +08:00
parent faa7d819a1
commit 20710b40ea

View File

@ -1,5 +1,6 @@
import { FormLayout } from '@formily/antd'; import { FormLayout } from '@formily/antd';
import { ISchema } from '@formily/react'; import { createForm } from '@formily/core';
import { FormContext, ISchema } from '@formily/react';
import { uid } from '@formily/shared'; import { uid } from '@formily/shared';
import { import {
CardItem, CardItem,
@ -30,6 +31,7 @@ const schema: ISchema = {
grid: { grid: {
type: 'void', type: 'void',
'x-component': 'Grid', 'x-component': 'Grid',
'x-read-pretty': true,
'x-initializer': 'AddFieldButton', 'x-initializer': 'AddFieldButton',
'x-uid': uid(), 'x-uid': uid(),
properties: {}, properties: {},
@ -53,6 +55,11 @@ const gridRowColWrap = (schema: ISchema) => {
}; };
}; };
const form = createForm({
initialValues: {},
// readPretty: true,
});
const FormItemInitializer = (props) => { const FormItemInitializer = (props) => {
const { item, insert } = props; const { item, insert } = props;
const { getInterface } = useCollectionManager(); const { getInterface } = useCollectionManager();
@ -68,6 +75,7 @@ const FormItemInitializer = (props) => {
options.name = name; options.name = name;
options.uiSchema.title = name; options.uiSchema.title = name;
collection.fields.push(options); collection.fields.push(options);
form.setValuesIn(name, uid());
insert({ insert({
name, name,
'x-component': 'CollectionField', 'x-component': 'CollectionField',
@ -115,9 +123,11 @@ export default function App() {
<SchemaInitializerProvider initializers={{ AddFieldButton }}> <SchemaInitializerProvider initializers={{ AddFieldButton }}>
<CollectionManagerProvider> <CollectionManagerProvider>
<CollectionProvider collection={collection}> <CollectionProvider collection={collection}>
<FormContext.Provider value={form}>
<FormLayout layout={'vertical'}> <FormLayout layout={'vertical'}>
<SchemaComponent schema={schema} /> <SchemaComponent schema={schema} />
</FormLayout> </FormLayout>
</FormContext.Provider>
</CollectionProvider> </CollectionProvider>
</CollectionManagerProvider> </CollectionManagerProvider>
</SchemaInitializerProvider> </SchemaInitializerProvider>