web-dev-qa-db-fra.com

SetState d'un tableau d'objets dans React

Ok, donc je suis tellement frustré de trouver la bonne solution, donc je pose le problème ici. Donner une réponse m'aiderait beaucoup, parce que je suis coincé!

l'arbre d'état ressemble à ceci 

this.state = {
      itemList : [{
                    _id : 1234,
                   description : 'This the description',
                   amount : 100
                    }, {
                    _id : 1234,
                   description : 'This the description',
                   amount : 100
                    }],
     }

Les problèmes sont: 

  1. ne peut mettre à jour aucune clé spécifique dans l'objet du tableau en fonctionà la _id
  2. L'état précédent devrait rester intact
4
Saikat Dey
this.setState(prevState => ({
    itemList: prevState.itemList.map(
    obj => (obj._id === 1234 ? Object.assign(obj, { description: "New Description" }) : obj)
  )
}));

Voici comment vous utiliseriez setState et prevstate pour mettre à jour un certain attribut d'un objet dans votre structure de données.

7
Omar

pour mettre à jour un état construit de la sorte, vous devrez trouver l'index de l'élément que vous souhaitez mettre à jour, copier le tableau et modifier l'index trouvé.

c'est plus facile et plus lisible si vous conservez la liste des enregistrements en tant qu'objet, avec id en tant que clé et enregistrement en tant que valeur.

0
simka