2014-05-14 5 views
7

तो चलो कहते हैं कि मैं एक घटक ImageGrid कहा जाता है और यह नीचे के रूप में परिभाषित किया गया है चलो:React.js: क्या अभी भी जेएसएक्स का उपयोग करने के लिए बाल घटकों को नामित करना संभव है?

window.ImageGrid = React.createClass({ 
    render: function() { 
     return (
      <div className="image-grid"> 
       <ImageGridItem /> 
      </div> 
     ); 
    } 
}); 

आप देख सकते हैं यह भी शामिल है एक बच्चे ImageGridItem बुलाया घटक प्रतिक्रिया होती है। जो नीचे परिभाषित किया गया है।

window.ImageGridItem = React.createClass({ 
    render: function() { 
     return (
      <div className="item-container">something</div> 
     ); 
    } 
}); 

यह रूप में लंबे समय के रूप में दोनों सीधे window की संपत्ति हैं ठीक काम करता है। लेकिन यह बहुत ही भयानक है इसलिए उदाहरण के लिए window.myComponents के नामस्थान के तहत मैं अपने सभी प्रतिक्रिया घटकों को समूहबद्ध करना चाहता हूं।

window.myComponents.ImageGrid  = React.createClass({...}); 
window.myComponents.ImageGridItem = React.createClass({...}); 

समस्या अब है कि के रूप में ImageGrid<ImageGridItem /> को संदर्भित करता है यह() फ़ंक्शन प्रस्तुत करना है, इस के जे एस संस्करण ImageGridItem() के रूप में जे एस के लिए बाहर संकलित हो जाता है निश्चित रूप से जो है:

तो परिभाषाओं को बदलने अपरिभाषित है क्योंकि यह वास्तव में myComponents.ImageGridItem() है और शिकायत प्रतिक्रिया करता है कि यह इसे नहीं मिल सकता है।

हाँ मुझे पता है मैं तो बस शामिल है कि घटक के लिए JSX लिख नहीं सकता और मैन्युअल myComponents.ImageGridItem({attr: 'val'}) है, लेकिन मैं वास्तव में के रूप में यह बहुत आसान पढ़ सकते हैं और साथ विकसित करने के लिए है JSX एचटीएमएल वाक्य रचना शॉर्टकट का उपयोग करना पसंद करते हैं।

क्या बच्चों के लिए <ImageGridItem /> वाक्यविन्यास का उपयोग करते हुए इसे काम करने के लिए कोई तरीका है? और यदि जेएसएक्स के भीतर जेएस नेमस्पेस को परिभाषित करना संभव नहीं है?

उत्तर

9

इस पुल से अनुरोध करता था सिर्फ विलय कर दिया:

https://github.com/facebook/react/pull/760

यह आप में <myComponents.ImageGridItem /> तरह बातें प्रतिक्रिया 0.11 और नए लिखने के लिए अनुमति देता है।

यह कहा गया है कि, उचित मॉड्यूल सिस्टम निर्भरता का प्रबंधन करने के लिए अनुशंसित तरीका है जो आपको आवश्यक कोड में खींचने से बचने के लिए है।

+0

लेकिन यदि आप मॉड्यूल सिस्टम का उपयोग करते हैं, तो क्या होगा यदि आपके पास एक मॉड्यूल से कई प्रतिक्रिया वर्ग लौटाए जा रहे हैं? इस मामले में आप प्रत्येक व्यक्तिगत वर्ग का संदर्भ कैसे देंगे? मैंने इस सटीक मुद्दे के बारे में यहां एक संबंधित प्रश्न पोस्ट किया है: http://stackoverflow.com/q/23739166/26510 –

+1

प्रत्येक वर्ग को एक अलग मॉड्यूल में विभाजित करने का सबसे आसान तरीका है। –

+0

पुल अनुरोध विलय कर दिया गया है, इसलिए यदि आप मास्टर रेपो से नवीनतम प्राप्त करते हैं, तो आप अच्छे होंगे! –

2

वर्तमान में, ऐसा करने का कोई तरीका नहीं है। जेएसएक्स के साथ नेमस्पेसिंग टोडो सूची पर है।

अधिकांश लोग किसी प्रकार की मॉड्यूल सिस्टम (ब्राउज़र, वेबपैक, requjs) का उपयोग करते हैं, जो नेमस्पेसिंग को प्रतिस्थापित करते हैं और घटकों को आसानी से उपयोग करने की अनुमति देते हैं। बहुत से अन्य लाभ हैं, इसलिए मैं इसे देखने की बहुत अनुशंसा करता हूं।

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