2015-06-04 6 views
14
React.render(<MyComponent/>, mainNode, function() { 
    console.log('2'); 
}); 
console.log('1'); 

प्रिंटReact.render() कॉलबैक कब कहा जाता है?

2 
1 

इसके अलावा, एक scrollTop() कॉलबैक में काम नहीं करता। अगर मैं रेंडर() रिटर्न के बाद इसे कॉल करता हूं तो यह काम करता है।

क्या React.render() तुल्यकालिक है?

क्या कार्य वापस लौटने पर डीओएम प्रस्तुत किया जाता है?

कॉलबैक कहलाता है कब? मैं कॉलबैक में क्या करना चाहूंगा?

+2

यदि आपको प्रतिक्रिया घटक के बाद कॉलबैक निष्पादित करने की आवश्यकता है, तो आपको प्रतिक्रिया घटक के घटकडिडमाउंट फ़ंक्शन के अंदर कॉलबैक फ़ंक्शन डालना चाहिए। –

+1

प्रतिक्रिया के बाद मुझे कॉलबैक चाहिए, डीओएम अपडेट किया गया है। मैं window.scrollTop() करने की कोशिश कर रहा हूं, लेकिन विशेष रूप से मैं प्रतिक्रिया के जीवन चक्र को बेहतर ढंग से समझने की कोशिश कर रहा हूं। घटक डीआईडीमाउंट कहलाता है जब dOM window.document पर उपलब्ध है? साथ ही, घटकडिडमाउंट को बाद में React.render() आमंत्रण के लिए बुलाया जाता है? – akula1001

+1

घटक उपलब्ध होने पर डीओएम उपलब्ध है क्योंकि आप इस चरण में React.findDOMNode (this.refs.node) का उपयोग कर सकते हैं। React.render तुल्यकालिक नहीं है। आपके उदाहरण में, React.render को सेवा के लिए कोई अनुरोध नहीं है क्योंकि प्रतिक्रिया लाइब्रेरी ब्राउज़र पर पहले से ही है इसलिए async नहीं होता है। –

उत्तर

13

आप कॉलबैक तर्क को उस घटक में स्थानांतरित कर सकते हैं जो आप आरोहित कर रहे हैं और उसके बाद घटक को डीओएम को प्रस्तुत किए जाने के लिए पहली बार componentDidMount विधि का उपयोग करें, और componentDidUpdate को डीओएम के बाद के अपडेट/प्रस्तुत करने के लिए उपयोग करें। घटक वास्तविक डीओएम में window.document के माध्यम से या इन दोनों विधियों में getDOMNode विधि का उपयोग कर उपलब्ध होगा।

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

पुष्टि करने के लिए रिएक्ट सोर्स कोड को देखते हुए - डीओएम में एक नया रूट नोड (आपके कोड स्निपेट के अनुसार) को प्रस्तुत करते समय प्रक्रिया सिंक्रोनस होती है और कॉलबैक (यदि पास हो जाता है) तुरंत बाद ट्रिगर्स (https://github.com/facebook/react/blob/master/src/renderers/dom/client/ReactMount.js लाइन 570-582)

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