字段组件外的 Redux-form 6.0.0 访问错误

IT技术 reactjs redux-form
2021-05-20 14:34:02

在 Redux-form v5 中,我能够从装饰表单的任何位置访问“内联”错误(异步验证),如下所示:

const fields = [
  'email'
]

// inside the decorated form
const { email } = this.props.fields

console.log(email.error) // 'the validation error of the 'email' field

如何使用 Redux-form 6.0.0+ 实现相同的功能?

2个回答

如果您想在输入旁边显示错误,则应在component您传递给Field. 如果你想一起显示所有的错误,比如在表单底部的提交按钮,你可以像这样使用新Fields组件

const fieldNames = [
  'email',
  'password'
]

const renderAllErrors = fields => (
  <ul>
    {Object.keys(fields).map(key => {
      const { meta: { touched, error } } = fields[ key ]
      return touched && error ? <li key={key}>{key}: {error}</li> : undefined
    })}
  </ul>
)

...

<Fields names={fieldNames} component={renderAllErrors}/>

我找到的解决方案是使用errorprops(http://redux-form.com/6.0.0-rc.4/docs/api/Props.md/#-error-any-)。从我的asyncValidate函数中,我error._error用我的字段错误填充返回的对象。然后我可以使用 const { error } = this.props.

如果有人有更好的解决方案...

编辑:不要这样做。使用有效答案(Fields组件)。