Object.assign()ist eine einfache Lösung, aber die Verwendung der (derzeit) besten Antwort - obwohl dies für die Herstellung zustandsloser Komponenten in Ordnung ist, führt dies zu Problemen für das vom OP gewünschte Ziel, zwei stateObjekte zusammenzuführen.
Mit zwei Argumenten Object.assign()wird das erste Objekt tatsächlich an Ort und Stelle mutiert, was sich auf zukünftige Instanziierungen auswirkt.
Ex:
Betrachten Sie zwei mögliche Stilkonfigurationen für eine Box:
var styles = {
box: {backgroundColor: 'yellow', height: '100px', width: '200px'},
boxA: {backgroundColor: 'blue'},
};
Wir möchten also, dass alle unsere Boxen Standard-Box-Stile haben, aber einige mit einer anderen Farbe überschreiben:
// this will be yellow
<div style={styles.box}></div>
// this will be blue
<div style={Object.assign(styles.box, styles.boxA)}></div>
// this SHOULD be yellow, but it's blue.
<div style={styles.box}></div>
Nach Object.assign()der Ausführung wird das Objekt 'styles.box' endgültig geändert.
Die Lösung besteht darin, ein leeres Objekt an zu übergeben Object.assign(). Auf diese Weise weisen Sie die Methode an, ein NEUES Objekt mit den Objekten zu erstellen, die Sie übergeben. Wie so:
// this will be yellow
<div style={styles.box}></div>
// this will be blue
<div style={Object.assign({}, styles.box, styles.boxA)}></div>
// a beautiful yellow
<div style={styles.box}></div>
Diese Vorstellung von Objekten, die an Ort und Stelle mutieren, ist für React von entscheidender Bedeutung, und die ordnungsgemäße Verwendung Object.assign()ist für die Verwendung von Bibliotheken wie Redux sehr hilfreich.