Le composant React ne s'affiche pas à nouveau lors de la mise à jour de l'état
P粉277464743
P粉277464743 2023-08-20 10:08:52
0
2
457
<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粉277464743
P粉277464743

répondre à tous(2)
P粉001206492

Ne modifiez pas le statut directement

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

P粉638343995

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 :

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal