筆者最近開擼了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...