useState Hook 未正确更新

useState Hook not updating properly

我的 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 无法一次 update/push 多个数据,任何答案都将非常有用。谢谢

虽然您可以改用回调,例如:

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('');

然后,例如,当您需要为 empty 设置错误时调用 setEmptyError