Die React-Dokumentation besagt:
Behandle this.state so, als ob es unveränderlich wäre.
Dein push
wird den Status direkt ändern und das könnte potenziell zu fehleranfälligem Code führen, selbst wenn du den Status danach wieder "zurücksetzt". Zum Beispiel könnte es dazu führen, dass einige Lifecycle-Methoden wie componentDidUpdate
nicht ausgelöst werden.
Der empfohlene Ansatz in späteren React-Versionen besteht darin, eine Updater-Funktion zu verwenden, um Rennbedingungen zu vermeiden, wenn Zustände geändert werden:
this.setState(prevState => ({
arrayvar: [...prevState.arrayvar, neuelement]
}))
Der Speicher "verschwendung" ist im Vergleich zu den Fehlern, denen Sie bei der Verwendung von nicht-standardmäßigen Zustandsänderungen gegenüberstehen könnten, kein Problem.
Alternative Syntax für frühere React-Versionen
Sie können concat
verwenden, um eine saubere Syntax zu erhalten, da es ein neues Array zurückgibt:
this.setState({
arrayvar: this.state.arrayvar.concat([neuelement])
})
In ES6 können Sie den Spread Operator verwenden:
this.setState({
arrayvar: [...this.state.arrayvar, neuelement]
})