【发布时间】:2022-01-22 03:20:52
【问题描述】:
我正在尝试跟踪多个状态(本例中的错误处理),但由于现阶段未知的原因(我认为缺乏理解)我似乎只能保持最后一次错误函数调用的状态:
export const SignUp = () => {
const [errors, setErrors] = useState({});
const validateFirstName = () => {
if (formData.firstName === undefined) {
setErrors(prevState => ({
...prevState.firstName,
firstName: 'First Name is required',
}));
return false;
} else if (formData.firstName.length < 3) {
setErrors(prevState => ({
...prevState.firstName,
firstName: 'First Name is too short',
}));
return false;
}
return true;
};
const validateLastName = () => {
if (formData.lastName === undefined) {
setErrors(prevState => ({
...prevState.lastName,
lastName: 'Last Name is required',
}));
return false;
} else if (formData.lastName.length < 1) {
setErrors(prevState => ({
...prevState.lastName,
lastName: 'Last Name is too short',
}));
return false;
}
return true;
};
const formSubmitHandler = e => {
e.preventDefault();
validateFirstName();
validateLastName();
};
}
所以在我的formSubmitHandler 中,我依次调用每个方法。这是错的吗?例如,他们需要async 吗?还是问题出在我的setError 函数中?我没有正确设置更新的状态吗?
当我退出errors 时,我只看到lastName:
{"errors": {"lastName": "Last Name is required"}}
我可以尝试什么来解决这个问题?
【问题讨论】:
标签: react-native react-hooks state