基于其他表单字段的 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']
})
我有 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']
})