packages/react/src/components/ObjectField.tsx (22 lines of code) (raw):

import React from 'react' import { ObjectField as ObjectFieldType } from '@formily/core' import { useForm, useField } from '../hooks' import { useAttach } from '../hooks/useAttach' import { ReactiveField } from './ReactiveField' import { FieldContext } from '../shared' import { JSXComponent, IFieldProps } from '../types' export const ObjectField = <D extends JSXComponent, C extends JSXComponent>( props: IFieldProps<D, C, ObjectFieldType> ) => { const form = useForm() const parent = useField() const field = useAttach( form.createObjectField({ basePath: parent?.address, ...props }) ) return ( <FieldContext.Provider value={field}> <ReactiveField field={field}>{props.children}</ReactiveField> </FieldContext.Provider> ) } ObjectField.displayName = 'ObjectField'