【问题标题】:Redux-form validation based on field in other form基于其他表单字段的 Redux-form 验证
【发布时间】:2023-03-10 00:31:01
【问题描述】:

我有 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;
}

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

【问题讨论】:

  • previous_field 的第一个表单被更改后尝试handleSubmit(noop) 第二个表单。
  • 如果这里没有答案,那么你可以在redux-form github页面github.com/erikras/redux-form/issues中搜索或创建问题@
  • @elmeister 你的意思是当第二个值改变时重新提交第一个表单?
  • @RajabShakirov,这些问题是针对错误的,而不是针对与使用相关的问题。
  • @ashwin-van-dijk 不,当第一个表单的previous_field 更改时,重新提交第二个表单以再次在username 上调用validate

标签: reactjs redux redux-form


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 2015-07-24
    相关资源
    最近更新 更多