Die React-Komponente wird beim Aktualisieren des Status nicht erneut gerendert
P粉277464743
P粉277464743 2023-08-20 10:08:52
0
2
421
<p>Ich denke, Sie haben eine bessere Lösung für dieses Problem: Ich habe eine Datei, die ein Array meiner Katzenobjekte enthält: </p> <pre class="brush:php;toolbar:false;">var columns = [ { „id“: 1, „Name“: „Faktur“, „ausgewählt“: falsch }, { "id": 2, "name" : "Telefony", „ausgewählt“: falsch }, { "id": 3, „Name“: „Komputery“, „ausgewählt“: falsch }, { "id": 4, „Name“: „Rachunkowośc“, „ausgewählt“: falsch }, { "id": 5, „Name“: „Finanzen“, „ausgewählt“: falsch } ];</pre> <p>Ich habe: </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>Meine filterCategory-Funktion:</p> <pre class="brush:php;toolbar:false;">filterCategory(item,index) { this.state.categories[index].selected = !this.state.categories[index].selected; this.forceUpdate(); }</pre> <p>Wissen Sie, wie ich dies implementieren kann, ohne <code>forceUpdate()</code> zu verwenden? Ich habe auf Stack gelesen, dass die Verwendung von <code>this.forceUpdate()</code> vermieden werden sollte. </p>
P粉277464743
P粉277464743

Antworte allen(2)
P粉001206492

不要直接修改状态

使用setState方法进行状态更改。

P粉638343995

使用setState会自动触发重新渲染,所以不要直接修改状态,而是使用setState来更新状态。

filterCategory(item,index){
   var categories = [...this.state.categories];
   categories[index].selected = !categories[index].selected;
   this.setState({categories})
}

根据文档:

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!