Object.assign()एक आसान समाधान है, लेकिन (वर्तमान में) शीर्ष उत्तर इसका उपयोग - जबकि केवल स्टेटलेस घटक बनाने के लिए ठीक है, ओपी के दो stateवस्तुओं के विलय के वांछित उद्देश्य के लिए समस्याएं पैदा करेगा ।
दो तर्कों के साथ, Object.assign()वास्तव में भविष्य के तात्कालिकता को प्रभावित करते हुए, पहली वस्तु को जगह में बदल देगा।
उदाहरण के लिए:
एक बॉक्स के लिए दो संभावित स्टाइल कॉन्फिगर पर विचार करें:
var styles = {
box: {backgroundColor: 'yellow', height: '100px', width: '200px'},
boxA: {backgroundColor: 'blue'},
};
इसलिए हम चाहते हैं कि हमारे सभी बॉक्स डिफॉल्ट 'बॉक्स' शैली के हों, लेकिन कुछ अलग रंग के साथ लिखना चाहते हैं:
// 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>
एक बार Object.assign()निष्पादित होने के बाद , 'style.box' ऑब्जेक्ट को अच्छे के लिए बदल दिया जाता है।
समाधान के लिए एक खाली वस्तु पारित करना है Object.assign()। ऐसा करने में, आप इसे पास करने वाली वस्तुओं के साथ एक नई वस्तु बनाने की विधि बता रहे हैं। इस तरह:
// 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>
रिएक्ट के लिए इन-प्लेस म्यूटिंग की यह धारणा महत्वपूर्ण है, और Object.assign()Redux जैसे पुस्तकालयों का उपयोग करने के लिए उचित उपयोग वास्तव में मददगार है।