Maison > interface Web > js tutoriel > Comment mettre à jour correctement les propriétés d'état imbriquées dans React ?

Comment mettre à jour correctement les propriétés d'état imbriquées dans React ?

Mary-Kate Olsen
Libérer: 2024-12-25 15:26:13
original
693 Les gens l'ont consulté

How to Correctly Update Nested State Properties in React?

Modification des propriétés d'état imbriquées dans React

Les propriétés d'état imbriquées fournissent une organisation logique pour les structures d'état complexes dans React. Cependant, tenter de mettre à jour ces propriétés directement à l'aide de this.setState ne produit pas le résultat souhaité.

Solution :

Pour mettre à jour correctement les propriétés d'état imbriquées, suivez ces étapes pour préserver l'immuabilité de l'État :

  1. Créer un Copier :

    • Copiez la propriété imbriquée dans une nouvelle variable à l'aide de l'opérateur de propagation, par exemple, var someProperty = {...this.state.someProperty}.
  2. Modifier le Copier :

    • Apportez les modifications nécessaires à la propriété copiée, par exemple someProperty.flag = true.
  3. Mettre à jour l'état :

    • Mettre à jour l'état du composant en le définissant sur copie modifiée, par exemple, this.setState({someProperty}).

Pour les États hautement imbriqués :

Si l'état est profondément imbriqué, il n’est pas pratique d’utiliser l’opérateur spread à chaque niveau. Pensez à utiliser le package immutability-helper pour des mises à jour plus élégantes :

this.setState(prevState => ({
  ...prevState,
  someProperty: {
    ...prevState.someProperty,
    someOtherProperty: {
      ...prevState.someProperty.someOtherProperty,
      anotherProperty: {
        ...prevState.someProperty.someOtherProperty.anotherProperty,
        flag: false
      }
    }
  }
}));
Copier après la connexion

Immutability-Helper :

Le package immutability-helper fournit une syntaxe plus concise et intuitive pour mise à jour des propriétés d'état imbriquées :

import {update} from "immutability-helper";
this.setState(update(this.state, {
  someProperty: {
    someOtherProperty: {
      anotherProperty: {
        flag: {$set: false}
      }
    }
  }
}));
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal