recherche

Maison  >  Questions et réponses  >  le corps du texte

Le composant React ne s'affiche pas à nouveau lors de la mise à jour de l'état

<p>Je pense que vous avez une meilleure solution à ce problème : J'ai un fichier contenant un tableau de mes objets chat : </p> <pre class="brush:php;toolbar:false;">var catégories = [ { "identifiant": 1, "name" : "Faktury", "sélectionné" : faux }, { "identifiant": 2, "name" : "Téléphonie", "sélectionné" : faux }, { "identifiant": 3, "name" : "Ordinateur", "sélectionné" : faux }, { "identifiant": 4, "nom" : "Rachunkowośc", "sélectionné" : faux }, { "identifiant": 5, "name" : "Finances", "sélectionné" : faux } ];≪/pré> <p>J'ai : </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>Ma fonction filterCategory :</p> <pre class="brush:php;toolbar:false;">filterCategory(item,index) { this.state.categories[index].selected = !this.state.categories[index].selected; this.forceUpdate(); }</pré> <p>Savez-vous comment je peux implémenter cela sans utiliser <code>forceUpdate()</code> ? J'ai lu sur Stack que l'utilisation de <code>this.forceUpdate()</code> </p>
P粉277464743P粉277464743453 Il y a quelques jours460

répondre à tous(2)je répondrai

  • P粉001206492

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

    Ne modifiez pas le statut directement

    Utilisez la méthode setState pour les changements d'état.

    répondre
    0
  • P粉638343995

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

    Utilisez setState会自动触发重新渲染,所以不要直接修改状态,而是使用setState pour mettre à jour votre statut.

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

    Selon la documentation :

    répondre
    0
  • Annulerrépondre