useParentForm
描述
用于读取最近的 Form 或者 ObjectField 实例,主要方便于调用子表单的 submit/validate
签名
ts
import type { Form, ObjectField } from '@silver-formily/core'
declare function useParentForm(): Form | ObjectField用例
tsx
import { createForm } from '@silver-formily/core'
import { FormProvider, ObjectField, observer, useParentForm, VoidField } from '@silver-formily/react'
import { Typography } from 'antd'
// useParentForm 返回最近的 Form 或 ObjectField,方便调用 submit / validate
const Custom = observer(() => {
const parent = useParentForm()
return (
<p>
<Typography.Text>
{parent?.displayName}
</Typography.Text>
</p>
)
})
const form = createForm()
export default function Demo() {
return (
<FormProvider form={form}>
<ObjectField name="object">
<Custom />
</ObjectField>
<Custom />
<VoidField name="void">
<Custom />
</VoidField>
</FormProvider>
)
}tsx
import { createForm } from '@silver-formily/core'
import { FormProvider, ObjectField, observer, useParentForm, VoidField } from '@silver-formily/react'
import { Typography } from 'antd'
// useParentForm 返回最近的 Form 或 ObjectField,方便调用 submit / validate
const Custom = observer(() => {
const parent = useParentForm()
return (
<p>
<Typography.Text>
{parent?.displayName}
</Typography.Text>
</p>
)
})
const form = createForm()
export default function Demo() {
return (
<FormProvider form={form}>
<ObjectField name="object">
<Custom />
</ObjectField>
<Custom />
<VoidField name="void">
<Custom />
</VoidField>
</FormProvider>
)
}
查看源码
查找从当前字段开始:当前字段本身是 ObjectField 时直接返回它,否则沿父链查找最近的 ObjectField,最后回退到当前 form。