Mises à jour approfondies de l'état dans React avec des propriétés imbriquées
Lors de la gestion de l'état dans React, il est courant d'organiser les données en propriétés imbriquées pour une meilleure organisation. Cependant, la mise à jour directe de propriétés d'état profondément imbriquées peut entraîner des conséquences inattendues.
Le problème :
Considérez la structure d'état suivante :
this.state = { someProperty: { flag: true } }
La mise à jour de l'état en utilisant cette approche :
this.setState({ someProperty.flag: false });
... ne fonctionnera pas comme prévu. La méthode setState de React ne gère pas les mises à jour imbriquées.
Solution : clonage et mise à jour
Une solution consiste à cloner la propriété imbriquée, à effectuer la mise à jour, puis à définir la propriété mise à jour. propriété dans l'état :
var someProperty = {...this.state.someProperty} someProperty.flag = false; this.setState({someProperty})
L'opérateur spread (...) crée une copie superficielle de l'objet. Cependant, si votre état devient profondément imbriqué, cette approche peut devenir fastidieuse et sujette aux erreurs.
Immutability Helper
Pour des mises à jour d'état imbriquées plus complexes, envisagez d'utiliser l'immutabilité -package d'aide. Il fournit un moyen pratique de mettre à jour des objets imbriqués de manière immuable, en garantissant que l'état d'origine n'est pas muté.
Par exemple, pour mettre à jour une propriété profondément imbriquée à l'aide de immutability-helper :
this.setState(({someProperty}) => { return update(someProperty, { $set: { flag: false } }) })
Immutabilité -helper garantit que l'objet someProperty d'origine n'est pas modifié, mais qu'un nouvel objet est renvoyé avec la propriété flag mise à jour.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!