Antd Form 设置动态Item的值无效
在代码中我动态生成了Form.Item,在Item内设置initialValue无效。
就换了一种方式,使用form.setFieldsValue去设置表单值,在点击确定时,表单有值,也通过了校验, 但就是不显示值,请问是什么原因呢?
const RenderForm = () => {
const [form] = Form.useForm();
useEffect(() => {
if (deviceType) {
let map = {};
deviceType.customers.forEach((item) => {
map[item.id] = JSON.parse(item.defaultValue);
});
console.log('设置表单', map);
form.setFieldsValue({ customers: map });
setTimeout(() => {
let values = form.getFieldsValue();
console.log('values是', values);
}, 1000);
}
}, [deviceType]);
const getFormItems = () => {
console.log('deviceType', deviceType);
if (deviceType?.customers && deviceType.customers.length > 0) {
return deviceType.customers.map((item) => (
<Form.Item
key={item.id}
label={item.name}
name={['customers', item.id]}
rules={JSON.parse(item.rules)}
>
{getComponent(item.dataType, JSON.parse(item.dataConfig))}
</Form.Item>
));
}
return null;
};
return (
<Form form={form} onFinish={onFinish}>
<Form.Item label="名称" name="name" rules={getRules(RuleType.notOnlySpace, true, 30)}>
<Input />
</Form.Item>
{getFormItems()}
<Row justify="end">
<Space align="end">
<Button onClick={handleCancel}>取消</Button>
<Button type="primary" htmlType="submit">确定</Button>
</Space>
</Row>
</Form>
);
}
getComponent 这个方法里把 Select 和InputNumber封装了一下,所以无法显示值,该怎么避免这个问题呢
虽然不知道原因,但是我把Component封装过的 Select 和Input 添加了一个defaultValue,设置为初始值,就可以了