React の useState フォームと機能更新フォームが必要なのはなぜですか?
<p>React Hook 関数の更新に関するドキュメントを読んでいて、次の文を見つけました: </p>
<ブロック引用>
<p>更新された値は前の値に基づいているため、「 」および「-」ボタンは関数形式を使用します</p>
</blockquote>
<p>しかし、関数更新の目的がわかりません。また、新しい状態を計算するときに古い状態を直接使用することとの違いもわかりません。 </p>
<p><strong>React useState Hook の更新関数に関数更新フォームが必要なのはなぜですか? </strong> <strong>違いがはっきりとわかる(したがって、直接更新を使用するとエラーが発生する)例は何ですか? </strong></p>
<p>たとえば、ドキュメントの例を次のように変更すると、</p>
<pre class="brush:php;toolbar:false;">function Counter({initialCount}) {
const [カウント, setCount] = useState(initialCount);
戻る (
<>
カウント: {カウント}
<button onClick={() => setCount(initialCount)}>リセット</button>
<button onClick={() => setCount(prevCount => prevCount 1)}> </button>
<button onClick={() => setCount(prevCount => prevCount - 1)}>-</button>
</>
);
}</pre>
<p><code>count</code> を直接更新します: </p>
<pre class="brush:php;toolbar:false;">function Counter({initialCount}) {
const [カウント, setCount] = useState(initialCount);
戻る (
<>
カウント: {カウント}
<button onClick={() => setCount(initialCount)}>リセット</button>
<button onClick={() => setCount(count 1)}> </button>
<button onClick={() => setCount(count - 1)}>-</button>
</>
);
}</pre>
<p>動作に違いは見られず、カウントが更新されない(または最新ではない)状況は想像できません。カウントが変更されるたびに、最新のカウントを取得するために新しいクロージャーが呼び出されるからです。 </p>