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 state
nesneyi 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.