我有一个注册表,其中包括:
用户必须在两个字段中输入相同的密码,否则密码验证下方应显示错误消息:"密码不匹配"
我正在使用Redux-Form,并围绕如何创建此验证.
我正在尝试使用字段级验证:字段级验证
我还从redux获取密码值:
const selector = formValueSelector('register');
const mapStateToProps = state => {
return {
password: selector(state, 'Password')
};
};
Run Code Online (Sandbox Code Playgroud)
所以,我写了以下验证函数:
const matchPasswords = pass1 =>pass2 =>
pass1 !== pass2 ? 'Passwords don't match' : undefined;
Run Code Online (Sandbox Code Playgroud)
我将其传递给验证字段,如下所示:
<Field
name="username"
type="text"
component={renderField}
label="Username"
validate={[matchPasswords(this.props.password]}
/>
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有什么建议?
D M*_*D M 16
找到了解决方案:
使用allValues:
const passwordsMatch = (value, allValues) =>
value !== allValues.password ? 'Passwords don\'t match' : undefined;
Run Code Online (Sandbox Code Playgroud)
要添加到@ DM的回答,value并且allValues 不需要ARGS在这个验证函数传递从父组件。这是一个完整的例子:
<Field /> 成分:
...
<Field
type="password"
name="passwordConfirmation"
validate={[required, passwordsMustMatch]}
/>
Run Code Online (Sandbox Code Playgroud)
passwordsMustMatch 验证:
export const passwordsMustMatch = (value, allValues) =>
value !== allValues.password ?
'Passwords do not match' :
undefined
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3290 次 |
| 最近记录: |