表单渲染:
return (
<form onSubmit={handleSubmit}>
<Field
name="login"
component={RenderTextField}
label="Login"
/>
<Field
name="password"
component={RenderTextField}
label="Password"
/>
</form>
)
验证:
const RenderTextField = ({
label,
input,
meta: { touched, invalid, error },
...custom
},props) => {
const classes = useStyles();
return (
<TextField
label={label}
placeholder={label}
error={touched && invalid}
helperText={touched && error}
{...input}
{...custom}
/>
);
}
const validate = values => {
console.log(values);
const errors = {}
const requiredFields = [
'login',
'password',
]
requiredFields.forEach(field => {
if (!values[field]) {
errors[field] = 'Required'
}
})
if (
values.email &&
!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(values.email)
) {
errors.email = 'Invalid email address'
}
return errors
}
我不知道错误在哪里,它只在我的验证中输入了一次,我无法在文本字段中键入任何内容,我没有正确导出我的表单,我从Redux表单文档中获得的验证我的RenderTextField也可以帮帮我吗?
即使没有点击我首先验证并返回我的文本字段,我的验证仍会正常进行:
错误:
{登录名:“必填”,密码:“必填”}
但是我不能在文本字段中写。
我发现问题是:
{...input}
{...custom}