在做一个设计器属性配置表单功能的开发,属性配置页中有一项是需要自定义的复杂结构,其他的各属性都是数值或字符串等基础类型,可以直接解析为对应的基础组件即可。但是初接触form,不知道如何实现自定义的数据结构保存到form表单中某一项中。下面是找到的方法,其实很简单,在antd的官方文档都有。
control = (
<TabCfg layerId={layerId}/>
)
<Col span={span || 24} className={itemCls}>
<FormItem
labelCol={{ span: labelCol || 12 }}
wrapperCol={{ span: wrapperCol || 12 }}
label={item.title}
>
{getFieldDecorator(item.name, options)(control)}
</FormItem>
</Col>
const TabCfg = (props, ref) => {
const { value, onChange } = props
useEffect(()=>{
if(data){
onChange(data)
}
},[data])
....
getFieldDecorator返回的组件,会被传入onChange属性,我们直接调用onChange方法就可以修改form对应的item项的值了。