最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React 組件中實現(xiàn)事件代理

 更新時間:2024年01月28日 11:56:13   作者:&ACE&  
React的事件系統(tǒng)和瀏覽器事件系統(tǒng)相比,主要增加了兩個特性:事件代理、和事件自動綁定,本文主要介紹了React 組件中實現(xiàn)事件代理,具有一定的參考價值,感興趣的可以了解一下

React 并不會把所有的處理函數(shù)直接綁定在真實的節(jié)點上。而是把所有的事件綁定到結(jié)構(gòu)的最外層,使用一個統(tǒng)一的事件監(jiān)聽器,這個事件監(jiān)聽器上維持了一個映射來保存所有組件內(nèi)部的事件監(jiān)聽和處理函數(shù)。

當(dāng)組件掛載或卸載時,只是在這個統(tǒng)一的事件監(jiān)聽器上插入或刪除一些對象。

當(dāng)事件發(fā)生時,首先被這個統(tǒng)一的事件監(jiān)聽器處理,然后在映射里找到真正的事件處理函數(shù)并調(diào)用。

這樣做的優(yōu)點是解決了兼容性問題,并且簡化了事件處理和回收機制(不需要手動的解綁事件,React 已經(jīng)在內(nèi)部處理了)。但是有些事件 React 并沒有實現(xiàn),比如 window 的 resize 事件。

在React@17.0.3版本中:

  • 所有事件都是委托在id = root的DOM元素中(網(wǎng)上很多說是在document中,17版本不是了);
  • 在應(yīng)用中所有節(jié)點的事件監(jiān)聽其實都是在id = root的DOM元素中觸發(fā);
  • React自身實現(xiàn)了一套事件冒泡捕獲機制;
  • React實現(xiàn)了合成事件SyntheticEvent;
  • React在17版本不再使用事件池了(網(wǎng)上很多說使用了對象池來管理合成事件對象的創(chuàng)建銷毀,那是16版本及之前);
  • 事件一旦在id = root的DOM元素中委托,其實是一直在觸發(fā)的,只是沒有綁定對應(yīng)的回調(diào)函數(shù);

在 React 組件中使用事件代理可以使用以下方法:

  • 使用 on 方法來綁定事件監(jiān)聽器:
class MyComponent extends React.Component {
  handleClick(event) {
    if (event.target.tagName === 'BUTTON') {
      console.log('Button clicked');
    }
  }

  render() {
    return (
      <div onClick={this.handleClick}>
        <button>Click me</button>
      </div>
    );
  }
}

在上述例子中,handleClick 方法被綁定到父級 div 元素的 onClick 事件上。當(dāng)點擊 button 元素時,事件會冒泡到父級 div 元素,從而觸發(fā) handleClick 方法。然后可以通過 event.target 來判斷點擊的元素是否是 button 元素。

  • 使用條件渲染來為不同的元素綁定不同的事件:
class MyComponent extends React.Component {
  handleClick(buttonType) {
    console.log(`${buttonType} clicked`);
  }

  render() {
    return (
      <div>
        <button onClick={() => this.handleClick('Button 1')}>Button 1</button>
        <button onClick={() => this.handleClick('Button 2')}>Button 2</button>
      </div>
    );
  }
}

在上述例子中,通過使用箭頭函數(shù),在每個 button 元素的 onClick 屬性中調(diào)用不同的 handleClick 方法,并傳遞不同的參數(shù)。

這些方法都是使用了 React 的事件委托機制,利用事件冒泡原理來實現(xiàn)事件代理。這樣可以減少事件監(jiān)聽器的數(shù)量,并且提高性能。

到此這篇關(guān)于React 組件中實現(xiàn)事件代理的文章就介紹到這了,更多相關(guān)React 事件代理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React中useEffect 與 useLayoutEffect的區(qū)別

    React中useEffect 與 useLayoutEffect的區(qū)別

    本文主要介紹了React中useEffect與useLayoutEffect的區(qū)別,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • react native實現(xiàn)監(jiān)控手勢上下拉動效果

    react native實現(xiàn)監(jiān)控手勢上下拉動效果

    這篇文章主要為大家詳細介紹了react native實現(xiàn)監(jiān)控手勢上下拉動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • React?保留和重置State

    React?保留和重置State

    這篇文章主要為大家介紹了React?保留和重置State實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • React實現(xiàn)二級聯(lián)動效果(樓梯效果)

    React實現(xiàn)二級聯(lián)動效果(樓梯效果)

    這篇文章主要為大家詳細介紹了React實現(xiàn)二級聯(lián)動效果,樓梯效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 詳解React 16 中的異常處理

    詳解React 16 中的異常處理

    這篇文章主要介紹了詳解React 16 中的異常處理的相關(guān)資料,React 16.x 版本中,引入了所謂 Error Boundary 的概念,從而保證了發(fā)生在 UI 層的錯誤不會連鎖導(dǎo)致整個應(yīng)用程序崩潰;未被任何異常邊界捕獲的異常可能會導(dǎo)致整個 React 組件樹被卸載,需要的朋友可以參考下
    2017-07-07
  • Jira 任務(wù)管理系統(tǒng)項目總結(jié)講解

    Jira 任務(wù)管理系統(tǒng)項目總結(jié)講解

    這篇文章主要為大家介紹了Jira 任務(wù)管理系統(tǒng)項目總結(jié)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • react中實現(xiàn)將一個視頻流為m3u8格式的轉(zhuǎn)換

    react中實現(xiàn)將一個視頻流為m3u8格式的轉(zhuǎn)換

    這篇文章主要介紹了react中實現(xiàn)將一個視頻流為m3u8格式的轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • react如何使用useRef模仿抖音標(biāo)題里面添加標(biāo)簽內(nèi)容

    react如何使用useRef模仿抖音標(biāo)題里面添加標(biāo)簽內(nèi)容

    本文介紹了如何模仿抖音發(fā)布頁面,使用div元素作為輸入框,并利用CSS樣式和JavaScript動態(tài)操作DOM,實現(xiàn)類似于input輸入框的功能,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • React獲取url后面參數(shù)的值示例代碼

    React獲取url后面參數(shù)的值示例代碼

    這篇文章主要介紹了React獲取url后面參數(shù)的值示例代碼,代碼簡單易懂,文末給大家補充介紹了react獲取URL中參數(shù)方法,需要的朋友可以參考下
    2022-12-12
  • react如何將字符串轉(zhuǎn)義成html語句

    react如何將字符串轉(zhuǎn)義成html語句

    這篇文章主要介紹了react如何將字符串轉(zhuǎn)義成html語句問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論

康乐县| 汶上县| 道孚县| 通渭县| 江安县| 榆林市| 玛沁县| 哈巴河县| 龙南县| 内黄县| 渭源县| 龙口市| 兰考县| 清镇市| 宜章县| 柞水县| 靖西县| 咸阳市| 得荣县| 东台市| 军事| 鄂伦春自治旗| 板桥市| 惠水县| 平原县| 信丰县| 台中县| 沂源县| 策勒县| 贵德县| 万山特区| 临清市| 大同市| 龙门县| 婺源县| 巴马| 固始县| 金寨县| 岳池县| 涞水县| 叙永县|