1

我正在尝试构建一个表单,如果 redux-form 验证通过,它将像任何其他 HTML 表单一样提交。如果验证失败,我希望它触及所有字段并阻止提交。

所以我需要:编写我自己的 onSubmit 函数,如果验证失败,它将触及字段。我正在尝试:

这个实现:

handleSubmit (event) {
  const {touch, fields} = this.props
  if (!allValid(fields)) {
    event.preventDefault()
    touch(...fields)
  }
}

产生此错误:TypeError: Cannot read property 'indexOf' of undefined不在调用touch. touch我在追查touch.

如果验证失败,使用内置的 handleSubmit 将获得正确的触摸行为,但是如果验证也通过了,我无法弄清楚如何让它像普通的 HTML 表单一样提交表单,而无需做这样的骇人听闻的事情:

handleSubmit (event) {
  const {touch, fields} = this.props
  if (!allValid(fields)) {
    event.preventDefault()
    this.props.handleSubmit(() => {})()
  }
}

这确实有效,但似乎是一个不好的方法。

4

1 回答 1

3

我相信touch期待一个字符串数组而不是一个对象数组。所以你可能想要touch(...Object.keys(fields)).

于 2016-01-14T05:42:48.537 回答