国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【Under-the-hood-ReactJS-Part7】React源碼解讀

solocoder / 3179人閱讀

摘要:但是事實上,標簽是生成了,但是不管他叫什么不是真正的標簽。是個工具類,用于執行一些樹數據結構的真正作用于的相關操作。終于,在掛載過程中被創建的元素被插入到文檔中。我們檢查下的包裝器,它是用來處理的。

接上文,

React流程圖:
https://bogdan-lyashenko.gith...

回到最初

作為掛載方法執行之后的輸出,我們得到了將用于插入DOM樹的HTML元素。但是事實上,標簽是生成了,但是mountComponenent--不管他叫什么---不是真正的HTML標簽。它其實是一種擁有字段children,node(真正的DOM節點)等的數據結構。當我們將HTML元素插入到DOM中指定的容器時(在ReactDOM.render方法中指定的容器),React會將容器中插入位置之前的內容給刪除。DOMLazyTree是個工具類,用于執行一些樹數據結構的真正作用于DOM的相關操作。
在最好的過程中,會執行parentNode.insertBefore(tree.node)方法,其中,parentNode是插入的容器中div節點,而tree.node則是我們真正的ExamleApplication對應的div節點。終于,在掛載過程中被創建的HTML元素被插入到DOM文檔中。

其實,上面步驟不是全部,如前文所講,對掛載的調用是被包裝進了一個事務中。也就是說,我們需要調用close方法來關閉這個事務。我們看下close包裝器列表,大多數情況下,我們需要恢復一些鎖定的行為,比如ReactInputSelection.restoreSelection(),ReactBrowserEventEmitter.setEnabled(previouslyEabled),同時,也需要通過this.reactMountReady.notifyAll來通知執行所有之前放入transaction.reactMountReady隊列里的回調。其中之一就是componentDidMount方法,這個方法會在close包裝器里被觸發。
現在,你應該對component did mount的含義有個比較清楚的認識了。

更多有關關閉事務

在掛載過程中,使用的事務不止上文的那一個,還有一個我們之前用來包裝ReactMount.atchedMountComponentIntoNode的調用。這個是需要關閉。

我們檢查下ReactUpdates.flushBatchedUpdates的包裝器,它是用來處理dirtyComponents的。我們剛剛完成了我們的第一次掛載,這時候是沒有dirtycomponents的,也就是說,在這次掛載中,它是一個空調用。所以,我們可以關閉這次事務,并且可以說,批量更新策略已經完成了。
(未完待續)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/95827.html

相關文章

  • Under-the-hood-ReactJS-Part11】React源碼解讀

    摘要:技術上來說,當方法被調用后或者發生改變后,方法都會被調用。下一步,會設置為。之后,檢測當前更新是否由更新引起的。這是因為,使用是導致組件持久化更新,而會被方法的返回值重新賦值。 接上文, React流程圖:https://bogdan-lyashenko.gith... 更新組件 關于組件的更新,我們先看下代碼里的注釋: 對于已掛載組件的更新過程,React會首先調用component...

    hiyayiji 評論0 收藏0
  • Under-the-hood-ReactJS-Part8】React源碼解讀

    摘要:接上文,流程圖我們已經知道掛載的工作流程,現在我們換個方向研究下方法,這個也是的重要組成部分。這個問題,我們會在下一篇文章中進行解答。。。 接上文, React流程圖:https://bogdan-lyashenko.gith... this.setState 我們已經知道掛載的工作流程,現在我們換個方向研究下--setState方法,這個也是React的重要組成部分。 首先,為什么我...

    zhoutk 評論0 收藏0
  • Under-the-hood-ReactJS-Part6】React源碼解讀

    摘要:源碼里有個獨立的模塊管理組件的所有子元素。第一個,實例化子元素使用并掛載它們。至于具體掛載流程,基于子元素類型的不同而有不同的掛載過程。掛載的過程基本完成了。 接上文, React流程圖:https://bogdan-lyashenko.gith... 創建初始子組件 在之前的步驟里,組件本身的構建已經完成,接下去,我們分析它們的子元素。總共分為兩步:掛載子元素(this.mountC...

    codergarden 評論0 收藏0
  • Under-the-hood-ReactJS-Part9】React源碼解讀

    摘要:當鼠標事件發生時,組件的最外層會進行處理,然后通過幾層包裝器的處理后,會開始進行批量更新操作。在這之后,會將這些事件處理成常見到樣子。 接上文, React流程圖:https://bogdan-lyashenko.gith... 回到最初 在流程圖中,也許你已經注意到,setState方法可以通過幾種方式觸發,更準確的說,可以分為是否由外部引起的(也就是是否由用戶觸發)。讓我們看下如下...

    SnaiLiu 評論0 收藏0
  • Under-the-hood-ReactJS-Part13】React源碼解讀

    摘要:接著,將返回的元素和之前的進行比較的,以驗證是否真的需要更新。我們看下代碼,代碼比較簡單好,對應于我們的這個列子,我們對于方法的更改并不會對方法造成影響。所以我們進入下一步,也就是對于節點的更新。 接上文, React流程圖:https://bogdan-lyashenko.gith... 如果組件真的需要更新 在組件剛開始更新過程時,如果有定義componentWillUpdate方...

    jerryloveemily 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<