摘要:接上文,流程圖子組件掛載我們繼續(xù)探究方法。對(duì)于我們的實(shí)例代碼而言,就是標(biāo)簽,所以沒(méi)有額外的處理過(guò)程。屬性驗(yàn)證緊接著的被調(diào)用的驗(yàn)證方法用于確保被正確設(shè)置,否則,會(huì)拋出異常。
接上文,
React流程圖:
https://bogdan-lyashenko.gith...
我們繼續(xù)探究mount方法。
如果渲染的標(biāo)簽里有復(fù)雜的html標(biāo)簽,如video,form,textarea等,React會(huì)包裝一些額外的信息。React會(huì)對(duì)一些多媒體相關(guān)的事件添加一些額外的監(jiān)聽器,如audio標(biāo)簽的volumechange事件,或者就簡(jiǎn)單包裝下一些標(biāo)簽的原生行為,如select,textarea等等。有很多類似于上面的包裝器,如ReactDOMSelect,ReactDOMTextarea(位于src/renderers/dom/client/wrappers/folder)。對(duì)于我們的實(shí)例代碼而言,就是div標(biāo)簽,所以沒(méi)有額外的處理過(guò)程。
屬性驗(yàn)證緊接著的被調(diào)用的驗(yàn)證方法用于確保props被正確設(shè)置,否則,React會(huì)拋出異常。比如,如果設(shè)置了props.dangerouslySetInnerHTML(調(diào)用這個(gè)方法一般用于插入一段html字符串)且參數(shù)對(duì)象的__html屬性缺失,則下面的錯(cuò)誤會(huì)被拋出:
props.dangerouslySetInnerHTML must be in the form {__html:...}. Please visit https://fb.me/react-invariant... for more information.創(chuàng)建HTML元素
最后,真正的html元素會(huì)通過(guò)document.createElement方法被創(chuàng)建,對(duì)于我們來(lái)說(shuō)就是div標(biāo)簽。在我們引入虛擬DOM之前,你在這一步第一次看到它們。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/95810.html
摘要:源碼里有個(gè)獨(dú)立的模塊管理組件的所有子元素。第一個(gè),實(shí)例化子元素使用并掛載它們。至于具體掛載流程,基于子元素類型的不同而有不同的掛載過(guò)程。掛載的過(guò)程基本完成了。 接上文, React流程圖:https://bogdan-lyashenko.gith... 創(chuàng)建初始子組件 在之前的步驟里,組件本身的構(gòu)建已經(jīng)完成,接下去,我們分析它們的子元素。總共分為兩步:掛載子元素(this.mountC...
摘要:當(dāng)鼠標(biāo)事件發(fā)生時(shí),組件的最外層會(huì)進(jìn)行處理,然后通過(guò)幾層包裝器的處理后,會(huì)開始進(jìn)行批量更新操作。在這之后,會(huì)將這些事件處理成常見到樣子。 接上文, React流程圖:https://bogdan-lyashenko.gith... 回到最初 在流程圖中,也許你已經(jīng)注意到,setState方法可以通過(guò)幾種方式觸發(fā),更準(zhǔn)確的說(shuō),可以分為是否由外部引起的(也就是是否由用戶觸發(fā))。讓我們看下如下...
摘要:技術(shù)上來(lái)說(shuō),當(dāng)方法被調(diào)用后或者發(fā)生改變后,方法都會(huì)被調(diào)用。下一步,會(huì)設(shè)置為。之后,檢測(cè)當(dāng)前更新是否由更新引起的。這是因?yàn)?,使用是?dǎo)致組件持久化更新,而會(huì)被方法的返回值重新賦值。 接上文, React流程圖:https://bogdan-lyashenko.gith... 更新組件 關(guān)于組件的更新,我們先看下代碼里的注釋: 對(duì)于已掛載組件的更新過(guò)程,React會(huì)首先調(diào)用component...
摘要:接上文,流程圖我們已經(jīng)知道掛載的工作流程,現(xiàn)在我們換個(gè)方向研究下方法,這個(gè)也是的重要組成部分。這個(gè)問(wèn)題,我們會(huì)在下一篇文章中進(jìn)行解答。。。 接上文, React流程圖:https://bogdan-lyashenko.gith... this.setState 我們已經(jīng)知道掛載的工作流程,現(xiàn)在我們換個(gè)方向研究下--setState方法,這個(gè)也是React的重要組成部分。 首先,為什么我...
摘要:接著,將返回的元素和之前的進(jìn)行比較的,以驗(yàn)證是否真的需要更新。我們看下代碼,代碼比較簡(jiǎn)單好,對(duì)應(yīng)于我們的這個(gè)列子,我們對(duì)于方法的更改并不會(huì)對(duì)方法造成影響。所以我們進(jìn)入下一步,也就是對(duì)于節(jié)點(diǎn)的更新。 接上文, React流程圖:https://bogdan-lyashenko.gith... 如果組件真的需要更新 在組件剛開始更新過(guò)程時(shí),如果有定義componentWillUpdate方...
閱讀 490·2023-04-25 23:00
閱讀 3510·2021-11-22 13:54
閱讀 1933·2021-10-27 14:14
閱讀 1504·2019-08-30 13:59
閱讀 3529·2019-08-23 16:15
閱讀 1980·2019-08-23 16:06
閱讀 3359·2019-08-23 15:26
閱讀 1281·2019-08-23 13:48