2013-06-25 13 views
5

मैं यह समझने के लिए संघर्ष कर रहा हूं कि फेसबुक के रिएक्ट जेएस ढांचे में संदर्भ कैसे काम करता है।फेसबुक के रिएक्ट जेएस ढांचे में संदर्भ

React.createClass को एक विनिर्देश पारित करते समय, कुछ विधियों (विशेष रूप से ईवेंट हैंडलर) को React.autoBind के उपयोग को 'घटक को कॉलबैक बाध्य' करने के लिए प्रतीत होता है। अन्य विधियों (विशेष रूप से प्रस्तुत करने()) में यह आवश्यकता नहीं है लेकिन फिर भी खुशी से 'this.props' या 'this.state' का संदर्भ लें।

रेंडर() विधि द्वारा उपयोग किए जाने वाले 'इस' का संदर्भ क्या है, यदि यह घटक नहीं है?

उत्तर

3

ऐसा इसलिए है क्योंकि render जैसे आंतरिक तरीकों के लिए वे पहले से ही autoBind करते हैं। वास्तव में, यदि आप autoBind पर कॉल करते हैं और उन विधियों को पार करते हैं तो आपको एक त्रुटि मिल जाएगी।

कस्टम तरीकों के लिए, शुरुआत में यह विचार यह है कि आप जो भी संदर्भ असाइन करना चाहते हैं, उससे चिपकना चाहते हैं, लेकिन यह 0.4.x (http://facebook.github.io/react/blog/2013/07/02/react-v0-4-autobind-by-default.html) में बदल दिया गया है।

मूल रूप से, क्योंकि बाध्य thiscreateClass अब autoBind होगा डिफ़ॉल्ट रूप से में हर विधि पर समय आप क्या चाहते हैं के अधिकांश, अब से है।

0

किसी भी घटक ढांचे में (सिर्फ प्रतिक्रिया नहीं), ईवेंट हैंडलर्स this संदर्भ के मैनुअल प्रबंधन की जरूरत है, क्योंकि वे एक कॉलबैक समारोह, नहीं विधि के रूप में डोम में पंजीकृत किए गए हैं। प्रतिक्रिया 0.3 में आप this स्वयं को संदर्भित कर सकते हैं, या आप React.autoBind का उपयोग कर सकते हैं जो अधिक कुशल है। रिएक्ट 0.4 ​​में, सभी इवेंट हैंडलर डीओएम में अपने रास्ते पर ढांचे से बंधे होते हैं, इसलिए आपको इसके बारे में और सोचने की ज़रूरत नहीं है।

इस प्रकार this संदर्भ हमेशा एक प्रतिक्रिया घटक उदाहरण का संदर्भ है।

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