项目场景:
自定义validator callback逻辑没有写完,form.validateFields (()=>{})根本不会执行
问题描述
找了很久的一个问题,提交时校验form.validateFields()不执行,不会报错
<Form.Item label='人口'>
<InputGroup compact>
{
form.getFieldDecorator('people', {
initialValue: peoplObj.people,
rules: [
{
required: true,
message: '人口必填'
},
(rule, value, callback, source, options) => {
const re = /^[0-9]+([.]{
1}[0-9]+){
0,1}$/;
if (value) {
if (!re.test(value)) {
callback(new Error('人口必须是数字', rule.field));
}
}
},],
})
原因分析:
校验规则里callback因为逻辑不完整导致提交时校验form.validateFields()不执行,不会报错,吧callback逻辑完整,再调用校验方法就会报错了
解决方案:
(rule, value, callback, source, options) => {
const re = /^[0-9]+([.]{1}[0-9]+){0,1}$/;
if (value) {
if (!re.test(value)) {
callback(new Error('人口必须是数字', rule.field));
}else{
callback()
}
}else{
callback();
}