useState Hook 未正确更新

时间:2021-01-26 05:55:32

标签: reactjs react-hooks use-state

我的 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 无法一次更新/推送多个数据,任何答案都将非常值得赞赏。谢谢

1 个答案:

答案 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