成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

結(jié)合源碼徹底理解 react事件機(jī)制原理 02 - 對(duì)于合成的理解

nihao / 3618人閱讀

摘要:前言這是事件機(jī)制系列文章的第二篇對(duì)于合成的理解,咱們就來說說合成這個(gè)名詞。在給注冊(cè)事件的時(shí)候也是對(duì)兼容性做了處理??偨Y(jié)以上就是我對(duì)于合成這個(gè)名詞的理解,其實(shí)內(nèi)部還處理了很多,我只是略微簡(jiǎn)單的舉了幾個(gè)栗子。

前言

這是react事件機(jī)制系列文章的第二篇-對(duì)于合成的理解,咱們就來說說合成這個(gè)名詞。

剛聽說合成這個(gè)詞時(shí)候,感覺是特別高大上,很有深度,不是很好理解。

當(dāng)我大概的了解過react事件機(jī)制后,略微了解一些皮毛,我覺得合成不單單是事件的合成和處理,從廣義上來說還包括:

1.首先就是對(duì)原生事件的封裝

2.對(duì)某些原生事件的升級(jí)和改造

3.不同瀏覽器事件兼容的處理

1. 對(duì)原生事件的封裝

先看一段再熟悉不過的代碼

上面代碼是給一個(gè)元素添加click事件的回調(diào)方法

方法中的參數(shù)e,其實(shí)不是原生事件對(duì)象而是react包裝過的對(duì)象,同時(shí)原生事件對(duì)象被放在了屬性 e.nativeEvent 內(nèi)。

通過調(diào)試,在執(zhí)行棧里看下這個(gè)參數(shù)e包含哪些屬性

![clipboard.p

vhR)

![圖片上傳中...]

看下官方文檔,幫助我們理解下合成事件

SyntheticEvent是react合成事件的基類,定義了合成事件的基礎(chǔ)公共屬性和方法。

react會(huì)根據(jù)當(dāng)前的事件類型來使用不同的合成事件對(duì)象,比如鼠標(biāo)單機(jī)事件 - SyntheticMouseEvent,焦點(diǎn)事件-SyntheticFocusEvent等,但是都是繼承自SyntheticEvent。

2.對(duì)原生事件的升級(jí)和改造

對(duì)于有些dom元素事件,我們進(jìn)行事件綁定之后,react并不是只處理你聲明的事件類型,還會(huì)額外的增加一些其他的事件,幫助我們提升交互的體驗(yàn)。

這里就舉一個(gè)例子來說明下:

當(dāng)我們給input聲明個(gè)onChange事件,看下 react幫我們做了什么?

可以看到react不只是注冊(cè)了一個(gè)onchange事件,還注冊(cè)了很多其他事件。

而這個(gè)時(shí)候我們向文本框輸入內(nèi)容的時(shí)候,是可以實(shí)時(shí)的得到內(nèi)容的。

然而原生只注冊(cè)一個(gè)onchange的話,需要在失去焦點(diǎn)的時(shí)候才能觸發(fā)這個(gè)事件。

所以這個(gè)原生事件的缺陷react也幫我們彌補(bǔ)了。

ps:上面紅色箭頭中有一個(gè) invalid事件,這個(gè)并沒有注冊(cè)到document上,而是在具體的元素上。我的理解是這個(gè)是html5新增的一個(gè)事件,當(dāng)輸入的數(shù)據(jù)不符合驗(yàn)證規(guī)則的時(shí)候自動(dòng)觸發(fā),然而驗(yàn)證規(guī)則和配置都要寫在當(dāng)前input元素上,如果注冊(cè)到document上這個(gè)事件就無效了。

3.瀏覽器事件的兼容處理

這個(gè)也算是一個(gè)點(diǎn)吧。react在給document注冊(cè)事件的時(shí)候也是對(duì)兼容性做了處理。

看下代碼

上面這個(gè)代碼其實(shí)就是給document注冊(cè)事件,內(nèi)部其實(shí)也是做了對(duì)ie瀏覽器的兼容。

總結(jié):

以上就是我對(duì)于react合成這個(gè)名詞的理解,其實(shí)react內(nèi)部還處理了很多,我只是略微簡(jiǎn)單的舉了幾個(gè)栗子。

本文算是一個(gè)過度吧,后面開始聊事件注冊(cè)和事件派發(fā)的機(jī)制。走起~

更多精彩內(nèi)容歡迎關(guān)注我的公眾號(hào)-前端張大胖

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/104427.html

相關(guān)文章

  • 前端小冊(cè) - 結(jié)合源碼徹底理解 react 事件機(jī)制

    摘要:對(duì)事件機(jī)制的初步理解和驗(yàn)證對(duì)于合成的理解事件注冊(cè)機(jī)制事件執(zhí)行本文基于進(jìn)行分析,雖然不是最新版本但是也不會(huì)影響我們對(duì)事件機(jī)制的整體把握和理解。最后希望通過本文可以讓你對(duì)事件機(jī)制有更清晰的認(rèn)識(shí)和理解。 showImg(https://segmentfault.com/img/bVbtvI3?w=1048&h=550); 前言 寫這個(gè)文章也算是實(shí)現(xiàn)19年的一個(gè) flag,研究一個(gè)知識(shí)點(diǎn)并且把...

    YJNldm 評(píng)論0 收藏0
  • 結(jié)合源碼徹底理解 react事件機(jī)制原理 04 - 事件執(zhí)行

    摘要:文章涉及到的源碼是基于版本,雖然不是最新版本但是也不會(huì)影響我們對(duì)事件機(jī)制的整體把握和理解??偨Y(jié)本文主要是從整體流程上介紹了下事件觸發(fā)的過程。 showImg(https://segmentfault.com/img/bVbtvI3?w=1048&h=550); 前言 這是 react 事件機(jī)制的第四節(jié)-事件執(zhí)行,一起研究下在這個(gè)過程中主要經(jīng)過了哪些關(guān)鍵步驟,本文也是react 事件機(jī)制...

    marser 評(píng)論0 收藏0
  • 結(jié)合源碼徹底理解 react事件機(jī)制原理 01 - 對(duì)事件機(jī)制初步理解和驗(yàn)證

    摘要:前言這是事件機(jī)制的第一篇,主要內(nèi)容有表象理解,驗(yàn)證,意義和思考。因?yàn)楹铣墒录挠|發(fā)是基于瀏覽器的事件機(jī)制來實(shí)現(xiàn)的,通過冒泡機(jī)制冒泡到最頂層元素,然后再由統(tǒng)一去處理。合成事件的阻止冒泡不會(huì)影響原生事件。 showImg(https://segmentfault.com/img/bVbtvP2?w=800&h=420); 前言 這是 react 事件機(jī)制的第一篇,主要內(nèi)容有:表象理解,驗(yàn)證...

    muddyway 評(píng)論0 收藏0
  • 結(jié)合源碼徹底理解 react事件機(jī)制原理 03 - 事件注冊(cè)

    摘要:文章涉及到的源碼是基于版本,雖然不是最新版本但是也不會(huì)影響我們對(duì)事件機(jī)制的整體把握和理解。到這里事件注冊(cè)就完事兒了。 showImg(https://segmentfault.com/img/bVbtvI3?w=1048&h=550); 前言 這是 react 事件機(jī)制的第三節(jié) - 事件注冊(cè),通過本文你將了解react 事件的注冊(cè)過程,以及在這個(gè)過程中主要經(jīng)過了哪些關(guān)鍵步驟,同時(shí)結(jié)合源...

    chaosx110 評(píng)論0 收藏0
  • React16事件機(jī)制徹底解讀

    摘要:二阻止事件冒泡,沒辦法阻止原生事件冒泡。從事件的三個(gè)階段講起,會(huì)略微提及下的事件機(jī)制。就是說注冊(cè)某個(gè)事件,會(huì)強(qiáng)制依賴其他事件。因?yàn)樗惺录际墙壎ㄔ谏系?。劃重點(diǎn)事件合成的過程。派發(fā)的過程實(shí)際上就是遍歷事件隊(duì)列的過程。 react.js事件機(jī)制 寫這篇文章的緣由: 一:在給input綁定事件的時(shí)候,很好奇為何onChange的交互形式竟然和onInput一模一樣。 因?yàn)樵腸hange...

    sugarmo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<