我的 useState 钩子没有正确更新,它不能一次取 2 个值 例如:- 我的 useState 钩子是
const [error, setError] = useState({
empty: "",
length: "",
});
const submitHandler = (e) => {
e.preventDefault();
if (email == "" || password == "")
setError({ ...error, length: "no lengthy values" });
if (email.length < 3) {
setError({ ...error, empty: "no empty values" });
}
setError 只更新 2 个条件中的一个,useState 数组也发生了同样的情况,useState 无法一次更新/推送多个数据,任何答案都将非常值得赞赏。谢谢
答案 0 :(得分:2)
虽然你可以使用回调代替,例如:
setError(error => ({ ...error, empty: "no empty values" }));
我认为设置状态一次会更有意义。如果测试没有产生错误,则将关联的属性设置为空字符串:
setError({
length: email === "" || password === "" ? 'no lengthy values' : '',
empty: email.length < 3 ? 'no empty values' : ''
});
更好的是,将不同的状态分开:
const [emptyError, setEmptyError] = useState('');
然后,例如,当您需要为 setEmptyError
设置错误时调用 empty
。