Heim  >  Fragen und Antworten  >  Hauptteil

Die React-Komponente wird beim Aktualisieren des Status nicht erneut gerendert

<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粉277464743P粉277464743404 Tage vor422

Antworte allen(2)Ich werde antworten

  • P粉001206492

    P粉0012064922023-08-21 09:33:19

    不要直接修改状态

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

    Antwort
    0
  • P粉638343995

    P粉6383439952023-08-21 09:06:42

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

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

    根据文档:

    Antwort
    0
  • StornierenAntwort