Antd - Form 表单提交onfinish函数不生效
Antd - Form 表单提交onfinish函数不生效
- 问题复现
- 问题修复
问题复现
const onFinish: FormProps<InvoiceTitleInfo>['onFinish'] = (values) => {console.log(values);
}
const rules = [() => ({validator() {const address = form.getFieldValue('address') || '';if (!address) {return Promise.reject(new Error('请输入地址!'));}},}),
];<Form form={form} name="eidtInvoiceForm" onFinish={onFinish} autoComplete="off"><Item<InvoiceTitleInfo> label="地址" name="address" rules={rules}><Input /></Item><Item><Button htmlType="submit">保存</Button></Item>
</Form>
这里写了一个简单的表单,里面有个文本框代表地址,我们添加了Form的校验规则:
- 地址不能为空,如果为空,效果如下:
但是如果我输入地址,然后点击保存:控制台什么都没输出,也就是onFinish
函数没生效。
问题修复
如果是像我这样,自定义了校验规则,一定要有兜底的返回,例如:
const rules = [() => ({validator() {const address = form.getFieldValue('address') || '';if (!address) {return Promise.reject(new Error('请输入地址!'));}// 这里一定要有!!return Promise.resolve();},}),
];
结果如下:这个时候onFinish
函数生效