stato ReactJS dovrebbe essere preferibilmente immutabile. Significa che, ogni volta che viene chiamato render()
, this.state
dovrebbe essere un oggetto diverso. Cioè: oldState == newState
è falso e anche oldState.someProp == newState.someProp
è falso.
Quindi, per oggetti di stato semplici, non c'è dubbio che dovrebbero essere clonati. Tuttavia, se il tuo oggetto di stato è molto complesso e profondo, la clonazione dell'intero stato potrebbe influire sulle prestazioni. Per questo motivo, gli helper di immutabilità di React sono intelligenti e clona solo gli oggetti che pensa che dovrebbero clonare.
Questo è come si fa quando si clona lo stato da soli:
onTextChange: function(event) {
let updatedState = _.extend({}, this.state); // this will CLONE the state. I'm using underscore just for simplicity.
updatedState.text = event.text;
this.setState(updatedState);
}
Questo è come si fa quando si lascia di Reagire aiutanti immutabilità determinare quali oggetti si dovrebbe in realtà clonare:
onTextChange: function(event) {
let updatedState = React.addons.update(this.state, { text: {$set: event.text} });
this.setState(updatedState);
}
L'esempio precedente funzionerà meglio del primo quando lo state
è troppo complesso e profondo.
fonte
2015-07-19 16:06:38
'push' è un comando di base che può essere ottenuto anche utilizzando' concat'. Ma la vera bellezza arriva quando si hanno matrici o oggetti di dati profondamente annidati. – David