我有一个像这样的FieldArray:
renderLanguages = fields => (
<div>
{fields.map(fieldName => <Field name={fieldName + '.iso'} component="input" type="text" />
</div>
)
<FieldArray name="languages" component={renderLanguages} />
我想以异步方式验证它:
const asyncValidate = values => {
console.log(values);
}
export default reduxForm({
form: 'languagesForm',
asyncValidate,
asyncBlurFields: ['languages']
})(LanguagesForm)
我的asyncValidate永远不会被调用。我想知道是否必须以其他方式指定asyncBlur字段。或者,如果redux-form不提供字段数组的异步验证。
答案 0 :(得分:0)
要让Redux-form
FormArray使用asyncValidate,需要将字段作为languages[].<nameOfTheFieldOfChildComponet>
传递,而不是languages
。
我认为它的设计也很普遍,我们不会对任何参数的变化进行异步验证,而是对特定参数进行验证。
以下是工作示例: - https://codesandbox.io/s/mq8zz58mrj
const asyncValidate = values => {
console.log(values);
}
export default reduxForm({
form: 'languagesForm',
asyncValidate,
asyncBlurFields: ['languages[].name']
})(LanguagesForm)