2015-05-21 7 views
75

मैं JSBin पर रेक्टजेएस फ्रेमवर्क के साथ खेल रहा हूं।ReactJS घटक नाम पूंजी अक्षरों से शुरू होना चाहिए?

मैंने देखा है कि यदि मेरा घटक नाम लोअरकेस अक्षर से शुरू होता है तो यह काम नहीं करता है।

उदाहरण के लिए निम्नलिखित प्रस्तुत करना नहीं है:

var fml = React.createClass({ 
    render: function() { 
    return <a href='google.com'>Go</a> 
    } 
}); 

React.render(<fml />, document.body); 

लेकिन जैसे ही मैं Fml साथ fml की जगह के रूप में यह प्रस्तुत करना है।

क्या कोई कारण है कि मैं छोटे अक्षरों वाले टैग शुरू नहीं कर सकता?

+0

कुछ और detials के लिए इस प्रश्न के उत्तर की जांच करें: [एचटीएमएल ब्राउज़र में प्रतिपादन नहीं कर रहा है - प्रतिक्रिया जेएस] (https://stackoverflow.com/questions/42110144/html-is-not-rendering-in-the -ब्रोसर-प्रतिक्रिया-जेएस) –

उत्तर

108

जेएसएक्स में, लोअर-केस टैग नामों को HTML टैग माना जाता है। हालांकि, एक डॉट (संपत्ति एक्सेसर) के साथ लोअर केस टैग नाम नहीं हैं।

HTML tags vs React Components देखें।

  • <component />React.createElement('component') (HTML टैग) को संकलित
  • <Component /> संकलित करने के लिए React.createElement(Component)
  • <obj.component />React.createElement(obj.component)
+5

काउंटर में एक और आधे घंटे जोड़ें। मैं पागल हो रहा था, 'घटक = घटकों [compType] जैसे कुछ प्रस्तुत करने की कोशिश कर रहा था; ', और बकवास त्रुटियां प्राप्त करना। – Zequez

+0

मैंने '<घटक [नाम] />' कोशिश की है जो या तो काम नहीं करता है। –

+2

मुझे विश्वास नहीं है कि मैंने नहीं देखा कि पहले ऐसा नियम है। – shaosh

30

Morphaus एक बहुत अच्छा जवाब दिया करने के लिए संकलित, सिर्फ एक और विस्तार जोड़ना चाहते थे। प्रतिक्रिया div आदि जैसे प्रसिद्ध तत्व नामों की श्वेतसूची रखने के लिए उपयोग की जाती है, जिसे यह डीओएम तत्वों और प्रतिक्रिया घटकों के बीच अंतर करने के लिए उपयोग किया जाता था।

लेकिन क्योंकि उस सूची को बनाए रखना इतना मजेदार नहीं है, और क्योंकि वेब घटक कस्टम तत्व बनाने के लिए संभव बनाता है, इसलिए उन्होंने इसे एक नियम बना दिया कि सभी प्रतिक्रिया घटकों को ऊपरी केस अक्षर से शुरू होना चाहिए, या एक बिंदु होना चाहिए।

+1

तर्क की व्याख्या करने के लिए धन्यवाद। – shaunakde

+1

महान जानकारी, यहां तक ​​कि यदि कोई आधिकारिक दस्तावेज़ संदर्भ है तो बेहतर होगा। धन्यवाद। –

+0

यह कब बदला गया था? –

0

जेएसएक्स में, प्रतिक्रिया वर्गों को XML संगत बनाने के लिए पूंजीकृत किया जाता है, ताकि यह HTML टैग के लिए गलत न हो। यदि प्रतिक्रिया वर्गों को पूंजीकृत नहीं किया जाता है, तो यह एक HTML टैग है जो प्री-डिफ़ाइंड जेएसएक्स सिंटैक्स के रूप में है।

2

JSX टैग का पहला भाग प्रतिक्रिया तत्व के प्रकार को निर्धारित करता है, मूल रूप से कुछ सम्मेलन पूंजीकृत, लोअरकेस, डॉट-नोटेशन है।

पूंजीकृत और बिंदु संकेतन प्रकार संकेत मिलता है कि JSX टैग एक घटक प्रतिक्रिया करने के लिए बात कर रहा है, इसलिए यदि आप JSX <Foo />React.createElement(Foo)
या
के संकलन का उपयोग <foo.bar />React.createElement(foo.bar) के संकलन और एक घटक परिभाषित या आयातित के अनुरूप आपकी जावास्क्रिप्ट फ़ाइल में।

लोअरकेस प्रकार एक स्ट्रिंग 'div' या 'span' में<div> या <span> और परिणाम की तरह एक अंतर्निहित घटक का संकेत React.createElement('div') को पारित कर दिया है।

प्रतिक्रिया पूंजी पत्र के साथ घटकों को नाम देने की सिफारिश करें। यदि आपके पास एक घटक है जो लोअरकेस अक्षर से शुरू होता है, इसे JSX में उपयोग करने से पहले इसे पूंजीकृत चर पर असाइन करें।

संबंधित मुद्दे