这有点奇怪的行为,但我实际上无法弄清楚我的验证发生了什么:)
我有一个字段级验证
export const confirm = (valueToConfirm, message) => (value, allValues) => {
if (value !== allValues[valueToConfirm]) {
return message;
}
return undefined;
};
它的使用就像
<Field
type="email"
name="confirmEmail"
component={TextInput}
validate={[required, email, confirm('email', 'Bla-bla-bla')]}
/>
这实际上仅在其他验证失败的情况下才有效。因此,如果用户输入正确的所有字段,并且只是 confirmEmail 将不匹配电子邮件 -不会有任何验证错误!
但是,如果我更改验证,那么它就不会是一个函数返回函数 - 它可以工作。
export const confirmEmail = (value, allValues) => {
if (!value || value !== allValues.email) {
return 'Bla-bla-bla';
}
return undefined;
};
PS 对于所有字段级验证都相同,例如动态minLength
验证。