useForm
描述
主要在自定义组件中读取当前Form实例,用于实现一些副作用依赖,比如依赖 Form 的 errors 信息之类的,用于实现一些较为复杂的场景化组件
签名
ts
import type { Form } from '@silver-formily/core'
declare function useForm<T extends object = any>(): Form<T>用例
tsx
import { createForm } from '@silver-formily/core'
import { Field, FormProvider, observer, useForm } from '@silver-formily/react'
import { Input, Space } from 'antd'
// 依赖 Form 状态的组件需要 observer 包裹才能响应更新
const Custom = observer(() => {
const form = useForm()
return (
<div>
{form.values.input}
</div>
)
})
const form = createForm({ validateFirst: true })
export default function Demo() {
return (
<FormProvider form={form}>
<Space>
<Field name="input" component={[Input]} />
<Field name="custom" component={[Custom]} />
</Space>
</FormProvider>
)
}tsx
import { createForm } from '@silver-formily/core'
import { Field, FormProvider, observer, useForm } from '@silver-formily/react'
import { Input, Space } from 'antd'
// 依赖 Form 状态的组件需要 observer 包裹才能响应更新
const Custom = observer(() => {
const form = useForm()
return (
<div>
{form.values.input}
</div>
)
})
const form = createForm({ validateFirst: true })
export default function Demo() {
return (
<FormProvider form={form}>
<Space>
<Field name="input" component={[Input]} />
<Field name="custom" component={[Custom]} />
</Space>
</FormProvider>
)
}
查看源码
该 hook 只读取上下文,不创建模型,也不订阅模型属性。应在对应 Provider 下使用;即使部分签名未声明空值,缺少或被清理的上下文在运行时仍可能返回 null/undefined。