react如何阻止冒泡失敗

發(fā)布時(shí)間:2024-02-26
react阻止冒泡失敗的方法:1、在沒(méi)有涉及到原生事件注冊(cè)只有react事件時(shí),用【e.stoppropagation()】阻止冒泡;2、需要用到【e.nativeevent.stopimmediatepropagation()】方法。
react阻止冒泡失敗的方法:
1、在沒(méi)有涉及到原生事件注冊(cè)只有react事件時(shí),用e.stoppropagation()阻止冒泡,代碼如下:
import react, { component } from 'react';import './app.css';class app extends component { handleclicktestbox = (e) => { console.warn('handleclicktestbox: ', e); } handleclicktestbox2 = (e) => { console.warn('handleclicktestbox2: ', e); } handleclicktestbox3 = (e) => { e.stoppropagation(); console.warn('handleclicktestbox3: ', e); } render() { return ( <div classname="test-box" onclick={this.handleclicktestbox} > <div onclick={this.handleclicktestbox2} > <div onclick={this.handleclicktestbox3} > </div> </div> </div> ); }}export default app;2、當(dāng)用document.addeventlistener注冊(cè)了原生的事件后,用e.stoppropagation()是不能阻止與document之間的冒泡,這時(shí)候需要用到e.nativeevent.stopimmediatepropagation()方法,代碼如下:
import react, { component } from 'react';import './app.css';class app extends component { componentdidmount() { document.addeventlistener('click', this.handledocumentclick, false); } handledocumentclick = (e) => { console.log('handledocumentclick: ', e); } handleclicktestbox = (e) => { console.warn('handleclicktestbox: ', e); } handleclicktestbox2 = (e) => { console.warn('handleclicktestbox2: ', e); } handleclicktestbox3 = (e) => { // 阻止合成事件的冒泡 e.stoppropagation(); // 阻止與原生事件的冒泡 e.nativeevent.stopimmediatepropagation(); console.warn('handleclicktestbox3: ', e); } render() { return ( <div classname="test-box" onclick={this.handleclicktestbox} > <div onclick={this.handleclicktestbox2} > <div onclick={this.handleclicktestbox3} > </div> </div> </div> ); }}export default app;3、阻止合成事件與非合成事件(除了document)之間的冒泡,以上兩種方式都不適用,需要用到e.target判斷, 代碼如下:
import react, { component } from 'react';import './app.css';class app extends component { componentdidmount() { document.addeventlistener('click', this.handledocumentclick, false); document.body.addeventlistener('click', this.handlebodyclick, false); } handledocumentclick = (e) => { console.log('handledocumentclick: ', e); } handlebodyclick = (e) => { if (e.target && e.target === document.queryselector('#inner')) { return; } console.log('handlebodyclick: ', e); } handleclicktestbox = (e) => { console.warn('handleclicktestbox: ', e); } handleclicktestbox2 = (e) => { console.warn('handleclicktestbox2: ', e); } handleclicktestbox3 = (e) => { // 阻止合成事件的冒泡 e.stoppropagation(); // 阻止與原生事件的冒泡 e.nativeevent.stopimmediatepropagation(); console.warn('handleclicktestbox3: ', e); } render() { return ( <div classname="test-box" onclick={this.handleclicktestbox} > <div onclick={this.handleclicktestbox2} > <div id="inner" onclick={this.handleclicktestbox3} > </div> </div> </div> ); }}export default app;相關(guān)免費(fèi)學(xué)習(xí)推薦:javascript(視頻)
上一個(gè):別墅密室易產(chǎn)生的一些認(rèn)識(shí)誤區(qū)
下一個(gè):經(jīng)常喝茶,能讓你的皮膚比同齡人更好

9013三極管引腳圖怎么接?9013三極管引腳圖接法詳解
顯存顆粒好壞檢測(cè)軟件用哪個(gè)比較好呢(顯存顆粒好壞檢測(cè)軟件用哪個(gè)比較好一點(diǎn))
RS-03L9R09FT,F(xiàn) 0603 9.09R現(xiàn)貨購(gòu)買(mǎi),風(fēng)華 0603 9.09Ω ±1% 1/10W
2021年電腦cpu排行榜(2020年電腦cpu推薦)
老款光驅(qū)接口,光驅(qū)如何連接電腦
win7旗艦版藍(lán)屏修復(fù),電腦win7系統(tǒng)出現(xiàn)藍(lán)屏如何修復(fù)
筆記本電腦自己用哪個(gè)牌子實(shí)用,哪個(gè)牌子的筆記本電腦實(shí)用
展訊丨2022年9月第二十三屆工博會(huì)新材料產(chǎn)業(yè)展將在上海展出
柿樹(shù)的整形修剪技巧
電腦為啥藍(lán)屏死機(jī)(電腦經(jīng)常藍(lán)屏或者死機(jī))
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos