React.useState(<initialState>) 如何使用 <initialState> 更新?

How does React.useState(<initialState>) update with <initialState> updates?

function Count() {
  const [count, setCount] = React.useState(0)
  const [count2] = React.useState(count)

  return (
    <div>
      <button onClick={() => setCount((prev) => prev + 1)}>+</button>
      <p>count: {count}</p> // does update
      <p>count 2: {count2}</p>. // does not update
    </div>
  )
}

为什么点击 <button>count 更新时 count2 不更新?

我认为只有惰性初始化状态(例如 React.useState(() => count))不会在组件重新渲染时更新。

创建 setCount2 以使用依赖于 countuseEffect 更新 count2

function Count() {
  const [count, setCount] = React.useState(0);
  const [count2, setCount2] = React.useState(count);

  useEffect(() => {
    setCount2(count);
  }, [count]);

  return (
    <div>
      <button onClick={() => setCount((prev) => prev + 1)}>+</button>
      <p>count: {count}</p> 
      <p>count 2: {count2}</p>
    </div>
  );
}

我对你的问题有一个混乱的解决方案,混乱的是它可以改进,但截至目前我想不出比这更好的解决方案。

  const [count, setCount] = React.useState(0);
  const [count2, setCount2] = React.useState(count);

  const changeStateForCount = () => {
    setCount(count + 1);
    setCount2(count + 1);
  };

  return (
    <div>
      <button onClick={changeStateForCount}>+</button>
      <p>count: {count}</p> {/* does update */}
      <p>count 2: {count2}</p>. {/* does not update */}
    </div>
  );
}