av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

javascript - react 中綁定事件和阻止事件冒泡

瀏覽:153日期:2023-05-15 15:14:54

問題描述

直接上代碼吧,我是想了半天不知道哪里出問題了。

state = {spread: false } componentDidMount() {console.log(’document clicked’)document.onclick = () => { if(this.state.spread) {this.setState({ spread: false}) }} } spreadHandler (e) {console.log(’target clicked’)// 這個事件綁定在一個 a 標簽上e.stopPropagation()this.setState({ spread: !this.state.spread}) }

這個功能就是一個類似淘寶頂部導航條的功能,只不過我這里用的是點擊事件。現(xiàn)在我觸發(fā)spreadHandler的時候取消了冒泡,但是document的click事件還是會觸發(fā)。不知道是因為事件綁定在 a 標簽上,還是別的什么原因造成的,有人知道這是怎么回事嗎?

問題解答

回答1:

react 的合成事件中的阻止冒泡, 是無法取消原生事件冒泡的.原生事件中阻止冒泡行為, 反而可以阻止 react 合成事件中的冒泡.所以應該盡量避免混用, 非用不可的話, 可以在 document 的事件處理程序中加一層判斷.

document.addEventListener(’click’, function(e){ // 類似事件委托, 判斷一下發(fā)生事件的元素. if( e.target.nodeName.toLowerCase() === ’a’ ) {return; }}, false);回答2:

e.preventDeafult()

回答3:

試試這個:

e.nativeEvent.stopImmediatePropagation();

react的事件機制與原生js的事件機制是有所區(qū)別的。

回答4:

react的合成事件都是通過綁定在document上click的事件代理實現(xiàn)的,所以無法通過阻止合成事件冒泡(已將冒到document上了)來阻止docuemnt上的其他事件處理,所以得用原生事件

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 国产精品成人免费视频 | 国产精品www | 深夜福利网址 | 亚洲精品欧美 | 国产裸体永久免费视频网站 | 欧美国产日韩视频 | 亚洲乱码国产乱码精品精软件 | 第一福利视频导航 | 美女福利视频 | 亚洲精品一区二区三区在线观看 | 一区二区三区欧美日韩 | 国产精品美女久久久久久久久 | 欧美精品一区二区在线观看 | 91免费网站入口 | 久久99精品久久久久久国产越南 | 免费av不卡 | 精产国产伦理一二三区 | 一级黄色网 | 在线视频一区二区三区 | 亚洲欧美一区二区三区四区 | 欧美激情区| 久久小视频 | 亚洲一级在线 | 伊人网在线观看 | 国产操操操 | 久久综合国产 | 天天操综合 | 午夜精品久久 | 蜜臀久久99精品久久久久宅男 | 一区二区三区黄色 | 成人午夜在线视频 | 成人激情综合 | 日韩视频一区二区 | 一级片黄色片 | 毛茸茸free性熟hd | 17c国产精品一区二区 | 高清乱码男女免费观看 | 国产三级免费观看 | 日日夜夜天天操 | 在线成人免费 | 午夜性福利|