आप इसका उपयोग कर सकते हैं React.cloneElement
, यह जानना बेहतर है कि आपके आवेदन में इसका उपयोग शुरू करने से पहले यह कैसे काम करता है। इसे और React v0.13
अधिक जानकारी के लिए, इस पर पेश किया गया है , इसलिए आपके लिए इस काम के साथ कुछ:
<div>{React.cloneElement(this.props.children, {...this.props})}</div>
तो आपके लिए यह समझने के लिए रिएक्ट डॉक्यूमेंटेशन की लाइनें लाएँ कि यह कैसे काम कर रहा है और आप उनका उपयोग कैसे कर सकते हैं:
React v0.13 RC2 में हम इस हस्ताक्षर के साथ React.addons.cloneWithProps के समान एक नया एपीआई पेश करेंगे:
React.cloneElement(element, props, ...children);
CloneWithProps के विपरीत, इस नए फ़ंक्शन में स्टाइल और क्लासनेम को मर्ज करने के लिए कोई जादू निर्मित व्यवहार नहीं होता है उसी कारण से हमारे पास ट्रांसफरप्रॉप्स से वह सुविधा नहीं है। किसी को भी यकीन नहीं है कि वास्तव में जादू की चीजों की पूरी सूची क्या है, जिससे कोड के बारे में तर्क करना मुश्किल हो जाता है और जब एक अलग हस्ताक्षर (आगामी प्रतिक्रिया मूल में जैसे) शैली का पुन: उपयोग करना मुश्किल होता है।
React.cloneElement लगभग इसके बराबर है:
<element.type {...element.props} {...props}>{children}</element.type>
हालाँकि, JSX और cloneWithProps के विपरीत, यह Refs को भी संरक्षित करता है। इसका मतलब यह है कि यदि आप इस पर एक रेफरी के साथ एक बच्चा प्राप्त करते हैं, तो आप गलती से इसे अपने पूर्वजों से चोरी नहीं करेंगे। आपको अपने नए तत्व से वही परिशोध मिलेगा।
एक सामान्य पैटर्न यह है कि आप अपने बच्चों के नक्शे पर जाएं और एक नया प्रस्ताव जोड़ें। CloneWithProps द्वारा रेफरी को खोने के बारे में कई समस्याएं बताई गईं, जिससे आपके कोड के बारे में तर्क करना मुश्किल हो गया। अब क्लोनमेंट के साथ समान पैटर्न का पालन करना उम्मीद के मुताबिक काम करेगा। उदाहरण के लिए:
var newChildren = React.Children.map(this.props.children, function(child) {
return React.cloneElement(child, { foo: true })
});
नोट: React.cloneElement (बच्चा, {ref: 'newRef'}) रेफरी को ओवरराइड करता है, इसलिए दो माता-पिता के लिए एक ही बच्चे के लिए रेफरी होना अभी भी संभव नहीं है, जब तक कि आप कॉलबैक-रेफ का उपयोग न करें।
प्रॉक्ट 0.13 में आने के लिए यह एक महत्वपूर्ण विशेषता थी क्योंकि प्रॉप्स अब अपरिवर्तनीय हैं। अपग्रेड पथ अक्सर तत्व को क्लोन करने के लिए होता है, लेकिन ऐसा करने से आप रेफरी खो सकते हैं। इसलिए, हमें यहां एक अच्छे उन्नयन मार्ग की आवश्यकता थी। जब हम फेसबुक पर कॉल अपग्रेड कर रहे थे तब हमें महसूस हुआ कि हमें इस तरीके की जरूरत है। हमें समुदाय से समान प्रतिक्रिया मिली। इसलिए हमने यह सुनिश्चित करने के लिए अंतिम रिलीज से पहले एक और आरसी बनाने का फैसला किया कि हम इसे प्राप्त करते हैं।
हम अंततः React.addons.cloneWithProps को अपदस्थ करने की योजना बनाते हैं। हम इसे अभी तक नहीं कर रहे हैं, लेकिन यह अपने स्वयं के उपयोग के बारे में सोचना शुरू करने और इसके बजाय React.cloneElement का उपयोग करने पर विचार करने का एक अच्छा अवसर है। इससे पहले कि हम वास्तव में इसे हटा दें, ताकि कोई तत्काल कार्रवाई आवश्यक न हो, हम एक बार अवक्षेपण सूचनाओं के साथ एक रिलीज़ शिप करना सुनिश्चित करेंगे।
अधिक यहाँ ...