<!--suppress ALL -->
<html>
<head>
<meta charset="utf-8">
<title>react的合成事件</title>
</head>
<body>
<div id="app"></div>
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script src="https://cdn.bootcss.com/babel-standalone/6.22.1/babel.min.js"></script>
<script type="text/babel">
class MessageBox extends React.Component {
componentDidMount() {
// documemt層的原生事件
// document.addEventListener('click', (e) => {
// alert('document 原生事件')
// e.stopImmediatePropagation()
// })
document.addEventListener('click', () => {
alert('document 原生事件')
})
document.body.addEventListener('click', () => {
alert('body 原生事件')
})
document.getElementById('parent').addEventListener('click', (e) => {
alert('parent 原生事件')
}, false)
document.getElementById('child').addEventListener('click', (e) => {
alert('child 原生事件')
// e.stopPropagation() //原生事件可以阻止合成事件
}, false)
}
parent = (e) => {
alert('父組件')
}
child = (e) => {
alert('子組件')
e.preventDefault()
// 1:無法阻止 document上面的原生事件,2.可以阻止合成事件的冒泡
e.stopImmediatePropagation()
// e.nativeEvent.stopImmediatePropagation()
// 1.阻止合成事件往最外層document上的事件冒泡
}
render() {
return (
<div id='parent' onClick={this.parent}>
父組件
<div id='child' onClick={this.child}>子組件</div>
</div>
);
}
}
// 渲染
ReactDOM.render(<MessageBox />, document.getElementById('app'), function () {
// console.log('渲染完成啦??!');
});
</script>
</body>
</html>
<!-- 合成事件 react
1:最先執(zhí)行原生方法 然后是合成事件
2:如果點(diǎn)擊子節(jié)點(diǎn),父類上綁定了原生事件,會(huì)先執(zhí)行父類的原生事件,然后再執(zhí)行子類的合成事件
3: 原生事件可以阻止合成事件, 合成事件無法阻止冒泡事件, 但是
1- e.nativeEvent.stopImmediatePropagation() 可以阻止document上的事件冒泡
2- e.stopImmediatePropagation() 可以阻止連續(xù)相同的事件綁定
-->
react 合成事件和原生事件混用
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。