我在登录表单字段验证中使用redux-form时遇到问题。目前,我只是想让同步验证工作,所以我可以检查基本错误。问题是表单似乎只在组件安装时检查验证,然后在该点之后不再检查。这是我的代码:
xxx.prototxt

我觉得我在这里遗漏了一些非常基本的东西,但我很难过。我觉得应该派出一个行动来切换"触及"属性onBlur(从而重新渲染表格),但它似乎并没有这样做,我无法通过redux-form文档找到类似的东西。有什么想法吗?
答案 0 :(得分:4)
您没有将onChange
处理程序传递给Input
组件,因此redux-form不知道值已更改。
问题在于:
renderInput({ label, type, input: { value }, meta: { touched, error }}){
return (
<Input label={ label }
type={ type }
filled={ value ? true : false }
touched={ touched }
error={ error } />
);
},
要解决此问题,请将input
作为属性传递给Input
组件,并将其定义为例如:
<div className="input-row">
<input {...input} type="text"/>
{touched && error &&
<span className="error">{error}</span>}
</div>
不要忘记将功能签名更改为renderInput({ label, type, input, meta: { touched, error }}) { ... }
- value
此处已删除。
作为替代方案,您可以明确传递onChange
:
renderInput({ label, type, input: { value, onChange }, meta: { touched, error }}){
return (
<Input label={ label }
onChange = { onChange }
type={ type }
filled={ value ? true : false }
touched={ touched }
error={ error } />
);
},
然后在onChange
<Input ... />