基本上,我正在检查用户是否输入了电子邮件或电话号码,如果没有,我正在尝试更改“错误”状态。为简单起见,我省略了“if (!user.email)”/“if (!user.phone)”语句,即使没有它,下面的代码也无法正常工作。我不明白为什么。
它只会改变第一件事的价值。如果我在这段代码运行后 console.log(error) ,我会看到 {phone: true, email: false}。当我切换 setError 语句的顺序时,我会看到 {phone: false, email: true}。
const [error, setError] = useState({
email: false,
phone: false,
});
const handleSubmit = (e) => {
e.preventDefault();
setError({ ...error, phone: true });
setError({ ...error, email: true });
}