2015-12-30 6 views
16

मैं React.js में बबलिंग और कैप्चरिंग को संभालने में एक उदाहरण ढूंढ रहा हूं। मुझे one with JavaScript मिला, लेकिन मुझे React.js के बराबर खोजने में परेशानी हो रही है।React.js में बबलिंग और कैप्चरिंग के लिए उदाहरण

मुझे React.js में बबलिंग और कैप्चरिंग के लिए एक उदाहरण कैसे बनाना होगा?

+1

घटना उत्साह से भरा हुआ एक डोम विशिष्ट घटना अवधारणा है। प्रतिक्रिया का पूरा बिंदु डीओएम से दूर होना है। आप में ऐसा होता घटक कार्यों बनाने और उन पर [प्रतिक्रिया घटनाओं] (https://facebook.github.io/react/docs/events.html) और रंगमंच की सामग्री के माध्यम से बच्चों के लिए नीचे गुजर – azium

+0

देखो द्वारा प्रतिक्रिया [प्रतिक्रिया डोम घटना श्रोताओं ] (https://facebook.github.io/react/tips/dom-event-listeners.html) –

उत्तर

40

बुदबुदाती और कैप्चरिंग दोनों के रूप में डोम कल्पना वर्णन करते हैं, के लिए कि कैसे आप संचालकों संलग्न के बारे में जाना छोड़कर उसी तरह से प्रतिक्रिया द्वारा समर्थित हैं।

बबलिंग सामान्य डीओएम एपीआई के साथ सरल है; बस एक तत्व की एक अंतिम माता-पिता के लिए कोई हैंडलर देते हैं, और किसी भी घटनाओं उस तत्व पर शुरू हो रहा होगा माता-पिता के लिए बुलबुला जब तक यह रास्ता साथ stopPropagation के माध्यम से नहीं रोका है:

<div onClick={this.handleClick}> 
    <button>Click me, and my parent's `onClick` will fire!</button> 
</div> 

कैप्चर बस के रूप में सरल है, हालांकि है यह mentioned only briefly in the docs है। सीधे शब्दों में ईवेंट हैंडलर संपत्ति नाम को Capture जोड़ें:

<div onClickCapture={this.handleClickViaCapturing}> 
    <button onClick={this.handleClick}> 
    Click me, and my parent's `onClickCapture` will fire *first*! 
    </button> 
</div> 

इस मामले में, handleClickViaCapturing अगर कॉल stopPropagation घटना पर, बटन के onClick हैंडलर बुलाया नहीं किया जाएगा।

This JSBin का प्रदर्शन करना चाहिए, कैसे कब्जा बुदबुदाती, और में stopPropagation काम करता है प्रतिक्रिया: https://jsbin.com/hilome/edit?js,output

+3

क्या ध्यान में रखना है, सभी वेनिला जावास्क्रिप्ट घटनाओं, एक पुस्तकालय से उदाहरण के लिए, पहले से कहा जाता है। कोई फर्क नहीं पड़ता कि आप कैप्चर या बबल चरण पर घटना पंजीकृत करते हैं। – Jodo

+0

अगर मैं विपरीत चाहता हूं तो क्या होगा? क्या होगा यदि मेरे पास माता-पिता के लिए 'ऑनक्लिक' है और मैं उस फ़ंक्शन को कॉल करना चाहता हूं, भले ही बच्चे को क्लिक किया जाए? (जब आप बच्चे बटन पर क्लिक करें माता पिता div के onClick शुरू हो रहा है) के ऊपर दो उदाहरण के पहले में वर्णित के रूप – Dane

+1

कि @Dane, सामान्य घटना उत्साह से भरा हुआ है। –

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