react 原始碼分析

2022-07-26 13:54:18 字數 875 閱讀 8139

筆者最近開擼了react原始碼,自己為自己做個記錄,同時希望能幫到其他同學。

從個人的視角來看,react大致分為以下幾個部分:

1.    react其實沒啥,都是透傳到react-dom上,前提是我看的是react-dom, 不是react-native.

2.    react-dom幾大部分:

1.    事件部分,針對原生事件做了封裝、分類.

a.  優先順序分類: discreateevent,  userblockingevent, continuousevent。

b.  捕獲,冒泡分類: trapcapturedevent, trapbubbledevent

c.  **事件(**到document上),原生事件(無法**到document上)

2.    fiber架構,替代了以往的虛擬dom, 採用鍊錶形式儲存dom結構

fiberrootnode,   fibernode,  createfiberfrom.....

3.    生命週期、鉤子函式部分

usestate, usereducer, usetransition.....

4.    函式元件, class元件分別處理

3.    scheduler部分,用來做排程的, 就是網上經常看到的時間分片,優先順序排程

1.  和react-dom之間優先順序形成一一對應, 並且能互相轉換

immediatepriority,  

userblockingpriority,  

normalpriority,  

lowpriority,  

idlepriority.

2.  所謂時間切片,其實就是利用了非同步操作原理。同步執行一些任務,時間片到期,就換非同步執行。

React原始碼解析

距離第一篇 react原始碼解析 一 已經過去將近4個月的時間,由於是我第一次進行原始碼解析相關的寫作,思路和文筆還不夠成熟。一百多天以來,我基於讀者反饋反思這幾篇文章中的不足,同時也在不斷學習借鑑其他優秀作者的寫作方法和寫作思路。最終總結出對於自己的原始碼寫作來說,需要改進的幾點 1.示例 太多 ...

react 原始碼defaultProps實現

首先我們回顧一下 defaultprops 的用法import react from react render name hello react 這樣我們就可以得到乙個渲染出hello react的介面啦。此時的關鍵,在於需要理解 reactdom.render 實際執行了什麼方法。經過斷點除錯,我...

react原始碼探索

react核心部分為 1 虛擬dom物件 reactdom.render args,element 這個方法第乙個引數接收三種形式的內容的 第一種 字串 第二種 由createclass建立的物件,使用createelement處理 第三種 直接有createelement建立的物件 這些還未呼叫r...