Object.assign()
jest łatwym rozwiązaniem, ale użycie (obecnie) najwyższej odpowiedzi - choć jest w porządku do tworzenia elementów bezstanowych, spowoduje problemy w pożądanym celu PO polegającym na połączeniu dwóch state
obiektów.
Za pomocą dwóch argumentów Object.assign()
faktycznie mutuje pierwszy obiekt w miejscu, wpływając na przyszłe wystąpienia.
Dawny:
Rozważ dwie możliwe konfiguracje stylu dla pudełka:
var styles = {
box: {backgroundColor: 'yellow', height: '100px', width: '200px'},
boxA: {backgroundColor: 'blue'},
};
Dlatego chcemy, aby wszystkie nasze pola miały domyślne style „pól”, ale chcemy nadpisać niektóre innym kolorem:
// 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>
Po Object.assign()
uruchomieniu obiekt „styles.box” zostaje na dobre zmieniony.
Rozwiązaniem jest przekazanie pustego obiektu Object.assign()
. Robiąc to, mówisz metodzie, aby wytworzyć NOWY obiekt z obiektami, które przekazujesz. Tak jak:
// 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>
To pojęcie obiektów mutujących w miejscu jest kluczowe dla React, a prawidłowe użycie Object.assign()
jest naprawdę pomocne w korzystaniu z bibliotek takich jak Redux.