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 जैसे पुस्तकालयों का उपयोग करने के लिए उचित उपयोग वास्तव में मददगार है।