Validation 蚂蚁设计动态场验证

Validation 蚂蚁设计动态场验证,validation,antd,Validation,Antd,我正在尝试创建动态字段验证器-当isDisable为true时,则不需要它+无需检查数字类型 {getFieldDecorator('number', { validateFirst: true, rules: [{ required: !isDisable, message: 'Must enter data' }, { type: 'number', message: 'Need to enter number' }] })( <In

我正在尝试创建动态字段验证器-当isDisable为true时,则不需要它+无需检查数字类型

{getFieldDecorator('number', {
  validateFirst: true,
  rules: [{
    required: !isDisable,
    message: 'Must enter data'
  }, {
    type: 'number',
    message: 'Need to enter number'
  }]
})(
  <InputNumber min={0} step={1} disabled={isDisable} />
)}
但此代码仍然检查数字类型

{getFieldDecorator('number', {
  validateFirst: true,
  rules: [{
    required: !isDisable,
    message: 'Must enter data'
  }, {
    type: 'number',
    message: 'Need to enter number'
  }]
})(
  <InputNumber min={0} step={1} disabled={isDisable} />
)}
我也在渲染函数中尝试了这一点:

const rules = isDisable ? { } : {
  validateFirst: true,
  rules: [{
    required: true,
    message: 'Must enter data'
  }, {
    type: 'number',
    message: 'Need to enter number'
  }]
};

{getFieldDecorator('number', rules)(
  <InputNumber min={0} step={1} disabled={isDisable} />
)}
但是,当输入数据时,验证器仅在调用ValidateFields和Scroll函数时发生,我希望它验证onChange事件

那么,如果字段被禁用,如何创建不检查类型的规则呢

谢谢。

这个怎么样:

const allFields = ['a', 'b', 'c'];
const fields = allFields.filter(disabledField);
this.props.form.validateFields(fields, () => {...})

谢谢我还发现,如果您将字段的值设置为未定义,那么验证器将不会检查它。