我正在尝试掌握React钩子useState
。目前我无法更新errors对象的状态,有点不确定我哪里出错了。这里的想法是将错误消息存储在注册表单中。
在这个例子中,一个用户提交了一个空的名字,但是错误对象总是保持为空。我做错了什么?
export const SignUp = () => {
const [errors, setErrors] = useState({});
const validateFirstName = () => {
if (formData.firstName === undefined) {
setErrors({...errors, firstName: 'First Name is required'});
console.log({errors}); // When condition is met errors is still an empty object
}
};
}
2条答案
按热度按时间y1aodyip1#
在状态更新之前,您正在控制台日志记录。您应该知道,更新状态是一项异步任务。请尝试按以下方法操作,我在代码中添加了注解:
kmpatx3s2#
你所做的基本上是正确的。当你调用console.log()时,状态还没有改变。如果你想在状态改变时做些什么,你可以使用useEffect钩子并将状态作为第二个参数传递。当你在jsx代码的某个地方使用errors状态时,它会像你期望的那样工作。