基于其他表单字段的 Redux 表单验证

Redux-form validation based on field in other form

我有 2 个表单,其中对第二个表单中字段的验证基于第一个表单中字段的值。这在自上而下填写表单时按预期工作。但是,当我更改第一种形式的值时,values 对象不会在验证中更新。

我的验证函数看起来像这样:

const validate = values => {
  const errors = {}
  if (!values.username) {
    errors.username = 'Required'
  } else if (values.username.length < values.previous_field.length) {
    errors.username = 'Your name can't be shorter than the previous field';
  }

  return errors;
}

当我在填写有效用户名后将前一个字段更改为短值时,用户名字段永远不会失效。

我决定重命名这些表单,这样它们就可以具有相同的名称。通过这种方式,值确实得到了更新,您可以按照我想要的方式使用验证。

两种形式现在都命名为userdata,第一种具有所有验证逻辑:

@reduxForm({
  form: 'userdata',
  validate,
  asyncValidate,
  asyncBlurFields: ['car_licenceplate', 'user_zipcode']
})