Object.assign()kolay bir çözümdür, ancak (şu anda) en iyi yanıtın kullanımı - vatansız bileşenler yapmak için iyi olsa da, OP'nin iki statenesneyi birleştirme hedefi için sorunlara neden olacaktır .
İki argümanla, Object.assign() aslında ilk nesneyi yerinde değiştirerek gelecekteki örneklemeleri etkileyecektir.
Ör:
Bir kutu için iki olası stil yapılandırmasını düşünün:
var styles = {
box: {backgroundColor: 'yellow', height: '100px', width: '200px'},
boxA: {backgroundColor: 'blue'},
};
Bu yüzden tüm kutularımızın varsayılan 'kutu' stillerine sahip olmasını istiyoruz, ancak bazılarının üzerine farklı bir renk yazmak istiyoruz:
// 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>
bir Zamanlar Object.assign() çalıştırıldığında, 'styles.box' nesnesi iyi olarak değiştirilir.
Çözüm, boş bir nesneyi iletmektir Object.assign(). Bunu yaparken, geçtiğiniz nesnelerle YENİ bir nesne üretme yöntemini anlatıyorsunuz. Şöyle ki:
// 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>
Yerinde mutasyon geçiren bu nesne kavramı React için kritik öneme sahiptir ve uygun kullanımı Object.assign()Redux gibi kitaplıkların kullanımı için gerçekten yararlıdır.