Object.assign()
è una soluzione facile, ma il suo utilizzo (attualmente) migliore della risposta - anche se va bene per creare componenti senza stato, causerà problemi per l'obiettivo desiderato dell'OP di unire due state
oggetti.
Con due argomenti, Object.assign()
muterà effettivamente il primo oggetto sul posto, influenzando le istanze future.
Ex:
Considera due possibili configurazioni di stile per una scatola:
var styles = {
box: {backgroundColor: 'yellow', height: '100px', width: '200px'},
boxA: {backgroundColor: 'blue'},
};
Quindi vogliamo che tutte le nostre scatole abbiano stili 'box' predefiniti, ma vogliamo sovrascriverne alcune con un colore diverso:
<div style={styles.box}></div>
<div style={Object.assign(styles.box, styles.boxA)}></div>
<div style={styles.box}></div>
Una volta Object.assign()
eseguito, l'oggetto "styles.box" viene cambiato per sempre.
La soluzione è passare un oggetto vuoto a Object.assign()
. In tal modo, stai dicendo al metodo di produrre un NUOVO oggetto con gli oggetti che gli passi. Così:
<div style={styles.box}></div>
<div style={Object.assign({}, styles.box, styles.boxA)}></div>
<div style={styles.box}></div>
Questa nozione di oggetti che mutano sul posto è fondamentale per React e un uso corretto di Object.assign()
è davvero utile per usare librerie come Redux.