成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

React源碼解析(一)

zzbo / 1560人閱讀

摘要:是整個(gè)應(yīng)用的起點(diǎn),包含應(yīng)用掛載的目標(biāo)節(jié)點(diǎn),記錄整個(gè)應(yīng)用更新過(guò)程的各種信息是一個(gè)對(duì)象是當(dāng)前應(yīng)用對(duì)應(yīng)的對(duì)象,即。每個(gè)節(jié)點(diǎn)會(huì)對(duì)應(yīng)一個(gè)對(duì)象,記錄節(jié)點(diǎn)的各種狀態(tài),比如,,這些狀態(tài)更新完成后會(huì)被更新,是所對(duì)應(yīng)節(jié)點(diǎn)的實(shí)際的實(shí)例,比如對(duì)應(yīng)一個(gè)就是一個(gè)。

ReactDom.render做了什么

首先react代碼分為react和react-dom兩個(gè)包,react中代碼量特別的少,基本就是API的定義,調(diào)用react-dom中的實(shí)現(xiàn)。調(diào)用的第一個(gè)API就是:

  ReactDom.render(App,
)

這個(gè)方法做的事情其實(shí)很簡(jiǎn)單,就是創(chuàng)建了根節(jié)點(diǎn),并做了應(yīng)用更新前的一系列準(zhǔn)備工作,流程是這樣的:創(chuàng)建reactRoot—————>創(chuàng)建FiberRoot————>創(chuàng)建RootFiber,Update———>把update加到更新隊(duì)列Fiber.updateQueue中;
雖然這個(gè)過(guò)程很簡(jiǎn)單,但是創(chuàng)建的每一個(gè)對(duì)象都很重要。
1.reactRoot: 其實(shí)沒(méi)太多實(shí)際的意義,被創(chuàng)建以后,創(chuàng)建了FeberRoot對(duì)象。
2.FiberRoot: 是整個(gè)應(yīng)用的起點(diǎn),包含應(yīng)用掛載的目標(biāo)節(jié)點(diǎn),記錄整個(gè)應(yīng)用更新過(guò)程的各種信息FiberRoot.currents是一個(gè)Fiber對(duì)象,是當(dāng)前應(yīng)用對(duì)應(yīng)的Fiber對(duì)象,即Root Fiber。

3.Fiber:每個(gè)reactElement節(jié)點(diǎn)會(huì)對(duì)應(yīng)一個(gè)Fiber對(duì)象,記錄節(jié)點(diǎn)的各種狀態(tài),比如state,props,這些狀態(tài)更新完成后Fiber.stateNode會(huì)被更新,F(xiàn)iber.stateNode是Fiber所對(duì)應(yīng)節(jié)點(diǎn)的實(shí)際的實(shí)例,比如fiber對(duì)應(yīng)一個(gè)classComponent,Fiber.stateNode就是一個(gè)Class。Fiber串聯(lián)整個(gè)應(yīng)用形成樹(shù)結(jié)構(gòu)。Fiber樹(shù)是單向鏈表結(jié)構(gòu)連接起來(lái)的。主要靠以下幾個(gè)字段:

// 指向他在Fiber節(jié)點(diǎn)樹(shù)中的`parent`,用來(lái)在處理完這個(gè)節(jié)點(diǎn)之后向上返回
      return: Fiber | null,
    
      // 單鏈表樹(shù)結(jié)構(gòu)
      // 指向自己的第一個(gè)子節(jié)點(diǎn)
      child: Fiber | null,
      // 指向自己的兄弟結(jié)構(gòu)
      // 兄弟節(jié)點(diǎn)的return指向同一個(gè)父節(jié)點(diǎn)
      sibling: Fiber | null,
  

3:Update對(duì)象,用于記錄組件狀態(tài)的改變,由ReactRoot創(chuàng)建,存放于Fiber.updateQueue中。
updateQueue依然為單向列表結(jié)構(gòu),依靠update.next連接起來(lái)。updateQueue會(huì)根據(jù)所有update計(jì)算出新的state。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/106180.html

相關(guān)文章

  • react解析: render的FiberRoot(三)

    摘要:查看創(chuàng)建核心函數(shù)源碼行調(diào)用函數(shù)創(chuàng)建是相關(guān),不用管源碼行這個(gè)指的是調(diào)用創(chuàng)建,下面我們將會(huì)說(shuō)到對(duì)象源碼行源碼行函數(shù)中,首先創(chuàng)建了一個(gè),然后又創(chuàng)建了一個(gè),它們兩者還是相互引用。 感謝 yck: 剖析 React 源碼解析,本篇文章是在讀完他的文章的基礎(chǔ)上,將他的文章進(jìn)行拆解和加工,加入我自己的一下理解和例子,便于大家理解。覺(jué)得yck寫(xiě)的真的很棒 。React 版本為 16.8.6,關(guān)于源碼的...

    muddyway 評(píng)論0 收藏0
  • React源碼解析ReactDOM.render()

    摘要:一更新的方式有三種渲染接下來(lái),我們就來(lái)看下源碼二作用在提供的里渲染一個(gè)元素,并返回對(duì)該組件的引用常見(jiàn)的用法是這個(gè)官網(wǎng)網(wǎng)址源碼服務(wù)端使用方法渲染節(jié)點(diǎn)是讓服務(wù)端盡可能復(fù)用節(jié)點(diǎn),提高性能元素容器應(yīng)用渲染結(jié)束后,調(diào)用的函數(shù)錯(cuò)誤抓取方法本質(zhì)是返回 showImg(https://segmentfault.com/img/remote/1460000020064414?w=1240&h=641);...

    iKcamp 評(píng)論0 收藏0
  • Luy 1.0 :個(gè)React-like輪子的誕生

    摘要:司徒正美的一款了不起的化方案,支持到。行代碼內(nèi)實(shí)現(xiàn)一個(gè)胡子大哈實(shí)現(xiàn)的作品其實(shí)就是的了源碼學(xué)習(xí)個(gè)人文章源碼學(xué)習(xí)個(gè)人文章源碼學(xué)習(xí)個(gè)人文章源碼學(xué)習(xí)個(gè)人文章這幾片文章的作者都是司徒正美,全面的解析和官方的對(duì)比。 前言 在過(guò)去的一個(gè)多月中,為了能夠更深入的學(xué)習(xí),使用React,了解React內(nèi)部算法,數(shù)據(jù)結(jié)構(gòu),我自己,從零開(kāi)始寫(xiě)了一個(gè)玩具框架。 截止今日,終于可以發(fā)布第一個(gè)版本,因?yàn)榫驮谧蛱?,?..

    codecook 評(píng)論0 收藏0
  • 基于React版本16.4的源碼解析

    摘要:本次分析的源碼采用的是的版本核心接口提供了處理的工具集我們先來(lái)看看做了什么事情即當(dāng)為空時(shí),返回不為時(shí)調(diào)用,最終返回一個(gè)數(shù)組這里說(shuō)一下,可以通過(guò)傳入的對(duì)所有子組件進(jìn)行操作,具體使用方法看下圖參數(shù)通過(guò)配合的例子把父組件的賦值給每個(gè)子組件我們先不 本次分析的源碼采用的是16.4.1的版本 核心接口 showImg(https://segmentfault.com/img/bVbeT9f?w=...

    joywek 評(píng)論0 收藏0
  • React源碼解析React.children.map()

    摘要:一例子看到一個(gè)有趣的現(xiàn)象,就是多層嵌套的數(shù)組經(jīng)過(guò)后,平鋪成了,接下來(lái)以該例解析二作用源碼進(jìn)行基本的判斷和初始化后,調(diào)用該方法就是重命名了,即解析注意,該數(shù)組在里面滾了一圈后,會(huì)結(jié)果三作用的包裹器源碼第一次第二次如果字符串中有連續(xù)多個(gè)的話(huà) showImg(https://segmentfault.com/img/remote/1460000019968077?w=1240&h=698);...

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<