【发布时间】:2020-10-25 03:36:05
【问题描述】:
我正在尝试通过验证以编程方式提交和 ant design (v4.3.4) 表单,但如果 form.validateFields() 在 onValuesChange() 内部,outOfDate: true 总是失败。 (这个表单是一个更大的表单工厂的一部分,所以我最终必须将表单组件传递给一个 props 函数,然后该函数将调用提交。
const FormA = (props: StepProps) => {
const [form] = useForm();
return (
<Form
form={form}
name="form-a"
onValuesChange={async (changedValues, allValues) => {
form.validateFields().
then(values => console.log("PASSED").
catch(errorInfo => console.log("FAILED", errorInfo));
}}
>
<Form.Item
rules={[{ required: true }]}
name="item-a">
<Input />
</Form.Item>
<Form.Item
rules={[{ required: true }]}
name="item-b"
>
<Input />
</Form.Item>
<Form.Item
rules={[{ required: true }]}
name="item-c"
>
<Input />
</Form.Item>
</Form>
);
};
export default FormA;
我已经调用了form.validatedField() 函数 onValuesChange。我从来没有在控制台中得到“PASSED”,即使所有输入都有值,我总是得到“FAILED”并显示以下错误信息:
{
errorFields: []
outOfDate: true
values: { ..}
}
如果我从onValuesChange 中删除 form.validateFields(),那么它工作正常。
我似乎无法弄清楚outOfDate 是什么以及为什么在 onValuesChange 函数中验证总是失败。
【问题讨论】:
-
我遇到了几乎相同的问题,也许我在
antd的 GitHub 上的问题会帮助您了解问题github.com/ant-design/ant-design/issues/26747
标签: reactjs antd ant-design-pro