State.item[1] im Status mit setState aktualisieren
In dieser Situation versuchen Sie, ein Objekt innerhalb eines Objekts zu aktualisieren in Ihrem Bundesstaat mit setState. Um den Status korrekt zu aktualisieren, müssen Sie eine Kopie des gesamten Statusobjekts erstellen, die Kopie ändern und dann den Status auf die aktualisierte Kopie festlegen.
So können Sie state.item[1] mit aktualisieren setState:
// 1. Make a shallow copy of the items
let items = [...this.state.items];
// 2. Make a shallow copy of the item you want to mutate
let item = {...items[1]};
// 3. Replace the property you're interested in
item.name = 'newName';
// 4. Put it back into our array. N.B. we *are* mutating the array here,
// but that's why we made a copy first
items[1] = item;
// 5. Set the state to our new copy
this.setState({items});
Sie können die Schritte 2 und 3 kombinieren, wenn Sie möchten:
let item = {
...items[1],
name: 'newName'
}
Oder Sie können das Ganze in einer Zeile erledigen:
this.setState(({items}) => ({
items: [
...items.slice(0,1),
{
...items[1],
name: 'newName',
},
...items.slice(2)
]
}));
Hinweis: In diesen Beispielen haben wir angenommen, dass es sich bei „items“ um ein Array handelt. Wenn items ein Objekt wäre, würden Sie ähnliche Aktualisierungen an den Objekteigenschaften vornehmen.
Denken Sie daran, dass Sie bei Verwendung von setState immer eine Kopie des vorherigen Status erstellen sollten, bevor Sie ihn ändern, um sicherzustellen, dass Sie nicht versehentlich mutieren das ursprüngliche Zustandsobjekt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3