दरअसल, इसके साथ कई तरीके हैं।
आप अपने प्रॉप के अंदर JSX का उपयोग करना चाहते हैं
जेएसएक्स को पैरामीटर को पार्स करने के लिए आप बस {} का उपयोग कर सकते हैं। एकमात्र सीमा हर JSX तत्व के समान है: इसे केवल एक मूल तत्व वापस करना होगा।
myProp={<div><SomeComponent>Some String</div>}
इसके लिए जाने के लिए सबसे अच्छा पठनीय तरीका एक फ़ंक्शन रेंडर मायप्रॉप बनाना है जो जेएसएक्स घटकों (मानक रेंडर फ़ंक्शन की तरह) को वापस करेगा और फिर myProp = {this.renderMyProp ()} पर कॉल करें।
आप एक स्ट्रिंग के रूप में केवल HTML पास करना चाहते हैं
डिफ़ॉल्ट रूप से, JSX आपको स्ट्रिंग मानों से कच्चा HTML रेंडर नहीं करने देता है। हालाँकि, ऐसा करने का एक तरीका है:
myProp="<div>This is some html</div>"
फिर अपने घटक में आप इसे इस तरह उपयोग कर सकते हैं:
<div dangerouslySetInnerHTML=myProp={{ __html: this.renderMyProp() }}></div>
खबरदार कि यह समाधान 'क्रॉस-साइट स्क्रिप्टिंग फॉरगरीज हमलों पर खुल सकता है। यह भी सावधान रहें कि आप केवल साधारण HTML, कोई JSX टैग या घटक या अन्य फैंसी चीजें ही प्रस्तुत कर सकते हैं।
सरणी तरीका है
प्रतिक्रिया में, आप JSX तत्वों की एक सरणी पास कर सकते हैं। इसका मत:
myProp={["This is html", <span>Some other</span>, "and again some other"]}
मैं इस विधि की सिफारिश नहीं करूंगा क्योंकि:
- यह एक चेतावनी (गुम कुंजियाँ) बनाएगा
- यह पठनीय नहीं है
- यह वास्तव में JSX तरीका नहीं है, यह एक इच्छित डिज़ाइन की तुलना में अधिक हैक है।
बच्चों को रास्ता
पूर्णता के लिए इसे जोड़ना लेकिन प्रतिक्रिया में, आप उन सभी बच्चों को भी प्राप्त कर सकते हैं जो आपके घटक के 'अंदर' हैं।
तो अगर मैं निम्नलिखित कोड ले:
<SomeComponent>
<div>Some content</div>
<div>Some content</div>
</SomeComponent>
तो दो divs उपलब्ध हो जाएगा। यह SomeComponent में props.children और मानक {सिंटैक्स के साथ प्रदान किया जा सकता है।
यह समाधान तब सही होता है जब आपके पास अपने कंपोनेंट को पास करने के लिए केवल एक एचटीएमएल कंटेंट होता है (इमेजिन ए पोपिन कंपोनेंट जो केवल पॉपिन की सामग्री को बच्चों की तरह लेता है)।
हालाँकि, यदि आपके पास कई सामग्री हैं, तो आप बच्चों का उपयोग नहीं कर सकते हैं (या आपको इसे किसी अन्य समाधान के साथ यहाँ संयोजित करने के लिए कम से कम आवश्यकता है)