[英]Antd 4 Checkbox doesn't have value after form submit
我有一个 Ant Design 4 表单,里面有一个复选框:
const Example = ({ initialValues, onSave }) => {
const [form] = Form.useForm();
useEffect(() => {
form.resetFields();
}, [initialValues.isAccepted]);
const onFinish = (values) => {
console.log(values);
onSave(values);
};
const getInitialValues = useCallback(() => ({
isAccepted: initialValues.isAccepted || false,
}));
return (
<Form form={form} onFinish={onFinish} initialValues={getInitialValues()}>
<Form.Item name="isAccepted">
<Checkbox>The company can use my data</Checkbox>
</Form.Item>
<Button type="primary" htmlType="submit">Save</Button>
</Form>
);
};
该复选框始终处于未选中状态,即使它在initialValues
中为true
。 此外,当我提交表单时, values
变量始终包含来自initialValues
的值,它不会记录我更改(选中或取消选中)复选框。
我希望从inititalValues
中正确设置初始值,并在onFinish
中获取复选框的当前值。
将valuePropName="checked"
添加到Form.Item
组件:
<Form.Item name="isAccepted" valuePropName="checked">
复选框的值不像文本输入那样存储在value
属性中。 相反,它有一个checked
属性。 您必须通过valuePropName
告诉 prop 的名称来告诉Form.Item
组件设置该属性/prop。
Form.Item
上的文档描述了这个道具:
valuePropName
: 子节点的属性,例如 Switch 的属性是 'checked'。 该prop是对getValueProps
的封装,自定义getValueProps
后会失效
稍后它描述了包装是如何发生的:
在被
Form.Item
的name
属性包裹后,value
(或valuePropName
定义的其他属性)onChange
(或trigger
定义的其他属性)道具将添加到表单控件中,表单数据流将由 Form 处理...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.