,form.validateFields (()=>{})根本不执行的问题解决

项目场景:

自定义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();
                    }

猜你喜欢

转载自blog.csdn.net/m0_55588706/article/details/124019312