为何使用React中的useState和函数式更新表单是必要的?
P粉041856955
P粉041856955 2023-08-24 13:38:45
0
2
342
<p>我正在阅读有关React Hook函数更新的文档,并看到了这句话:</p> <blockquote> <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 [count, setCount] = useState(initialCount); return ( &lt;&gt; Count: {count} &lt;button onClick={() =&gt; setCount(initialCount)}&gt;Reset&lt;/button&gt; &lt;button onClick={() =&gt; setCount(prevCount =&gt; prevCount + 1)}&gt;+&lt;/button&gt; &lt;button onClick={() =&gt; setCount(prevCount =&gt; prevCount - 1)}&gt;-&lt;/button&gt; &lt;/&gt; ); }</pre> <p>直接更新<code>count</code>:</p> <pre class="brush:php;toolbar:false;">function Counter({initialCount}) { const [count, setCount] = useState(initialCount); return ( &lt;&gt; Count: {count} &lt;button onClick={() =&gt; setCount(initialCount)}&gt;Reset&lt;/button&gt; &lt;button onClick={() =&gt; setCount(count + 1)}&gt;+&lt;/button&gt; &lt;button onClick={() =&gt; setCount(count - 1)}&gt;-&lt;/button&gt; &lt;/&gt; ); }</pre> <p>我看不出任何行为上的差异,并且无法想象出count不会被更新的情况(或者不是最新的情况)。因为每当count发生变化时,都会调用新的闭包来捕获最新的count。</p>
P粉041856955
P粉041856955

répondre à tous(2)
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!