मैं ReactJS घटक के भीतर event.stopPropagation () का उपयोग करने की कोशिश कर रहा हूं, एक क्लिक ईवेंट को बुदबुदाने से रोकने के लिए और एक क्लिक ईवेंट को ट्रिगर करने के लिए जो लीगेसी कोड में JQuery के साथ जुड़ा हुआ था, लेकिन ऐसा लगता है कि रिएक्ट के स्टॉपप्रॉपैगनेशन () केवल घटनाओं के प्रसार को रोकता है React में भी संलग्न है, और JQuery के stopPropagation () React से जुड़ी घटनाओं के प्रसार को नहीं रोकता है।
क्या इन घटनाओं में स्टॉपप्रॉपैगैशन () काम करने का कोई तरीका है? मैंने इन व्यवहारों को प्रदर्शित करने के लिए एक साधारण JSFiddle लिखा है :
/** @jsx React.DOM */
var Propagation = React.createClass({
alert: function(){
alert('React Alert');
},
stopPropagation: function(e){
e.stopPropagation();
},
render: function(){
return (
<div>
<div onClick={this.alert}>
<a href="#" onClick={this.stopPropagation}>React Stop Propagation on React Event</a>
</div>
<div className="alert">
<a href="#" onClick={this.stopPropagation}>React Stop Propagation on JQuery Event</a>
</div>
<div onClick={this.alert}>
<a href="#" className="stop-propagation">JQuery Stop Propagation on React Event</a>
</div>
<div className="alert">
<a href="#" className="stop-propagation">JQuery Stop Propagation on JQuery Event</a>
</div>
</div>
);
}
});
React.renderComponent(<Propagation />, document.body);
$(function(){
$(document).on('click', '.alert', function(e){
alert('Jquery Alert');
});
$(document).on('click', '.stop-propagation', function(e){
e.stopPropagation();
});
});
stopImmediatePropagation
दावा घटना श्रोताओं को उस क्रम में बुलाया जाएगा जिसमें वे बाध्य थे। यदि आपका रिएक्ट जेएस आपके jQuery (जैसा कि आपके फिडेल में है) से पहले आरंभीकृत किया जाता है, तो तत्काल प्रसार को रोकना काम करेगा।
componentDidMount
, लेकिन यह अनपेक्षित तरीके से अन्य रिएक्ट इवेंट हैंडलर के साथ हस्तक्षेप कर सकता है।
.stop-propagation
जरूरी काम नहीं करेगा। आपका उदाहरण ईवेंट प्रतिनिधिमंडल का उपयोग करता है, लेकिन तत्व पर प्रसार को रोकने की कोशिश कर रहा है। श्रोता को स्वयं तत्व से बंधे रहने की आवश्यकता है $('.stop-propagation').on('click', function(e) { e.stopPropagation(); });
:। यह फ़ेल्ड आपके द्वारा किए जा रहे सभी प्रचार को रोकता है: jsfiddle.net/7LEDT/6
event.nativeEvent.stopImmediatePropagation
अन्य ईवेंट श्रोताओं को गोलीबारी से रोकने के लिए उपयोग कर सकते हैं , लेकिन निष्पादन के आदेश की गारंटी नहीं है।