状態を更新するときに React コンポーネントが再レンダリングされない
P粉277464743
2023-08-20 10:08:52
<p>この問題にはもっと良い解決策があると思います:
私の猫オブジェクトの配列を含むファイルがあります: </p>
<pre class="brush:php;toolbar:false;">var category = [
{
「id」: 1、
"名前" : "工場",
「選択済み」: false
}、
{
「id」: 2、
"名前" : "電話",
「選択済み」: false
}、
{
「id」: 3、
"名前" : "コンピュータ",
「選択済み」: false
}、
{
「id」: 4、
"名前" : "ラチュンコウォシュク",
「選択済み」: false
}、
{
"id": 5、
"名前" : "フィナンセ",
「選択済み」: false
}
];</pre>
<p>私は次のものを持っています: </p>
<pre class="brush:php;toolbar:false;"><ul className="category">
{this.state.categories.map((item,index) =>
<li onClick={()=>this.filterCategory(item,index)} key={item.id} className={item.selected? 'active' : ''}>{item.name}< /li>
)}
</ul></pre>
<p>私の filterCategory 関数:</p>
<pre class="brush:php;toolbar:false;">filterCategory(item,index) {
this.state.categories[インデックス].selected = !this.state.categories[インデックス].selected;
this.forceUpdate();
}</pre>
<p><code>forceUpdate()</code> を使用せずにこれを実装する方法を知っていますか? Stack で <code>this.forceUpdate()</code> の使用は避けるべきだと読みました。 </p>
ステータスを直接変更しないでください
setState メソッドを使用して状態を変更します。
setState
ドキュメントによると:を使用すると、自動的に再レンダリングがトリガーされるため、状態を直接変更せず、
setStateを使用して状態を更新します。
リーリー