自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

說說 React 中 Fiber、DOM、ReactElement 實例對象之間的引用關系

開發(fā) 前端
本文探究 Fiber、DOM、ReactElement、類組件實例對象之間的引用關系。

大家好,我是前端西瓜哥。

本文探究 fiber、DOM、ReactElement、類組件實例對象之間的引用關系。

React 版本為 18.2.0

原生組件 fiber

圖片

原生組件 fiber,指的就是 type 為 "span"、"div" 的 fiber。

  1. fiber.stateNode 指向真實 DOM 節(jié)點。
  2. node["__reactFiber$" + randomKey] 。
  3. node["__reactProps$" + randomKey] 指向最新 props 對象。

類組件 fiber

圖片

  1. fiber.stateNode 指向類實例對象 instance。
  2. instance.__reactInternalSnapshotBeforeUpdate 指向 snapshot 對象(該對象通過 getSnapshotBeforeUpdate 生成,并提供給 componentDidUpdate 使用)。

利用 DOM 節(jié)點的 ['__reactFiber$' + randomKey] 屬性,我們能拿到對應的原生組件 fiber。

通過這個 fiber,我們其實拿到了整棵 fiber 樹。比如我們可以通過遞歸訪問 fiber.return 找到它所在的類組件或函數組件 fiber。

在控制臺選中一個元素,然后輸入 $0.__reactFi 然后按下 tab 鍵補全屬性,然后回車,我們就拿到了一個原生組件 fiber。

圖片

通過這個小技巧,我們可以去觀摩觀摩使用了 React 的網站的 fiber 樹結構,比如 figma。

React 版本太低的話,是沒有這個屬性的。

根 fiber

圖片

rootFiber 是一棵 fiber 樹的根節(jié)點。

fiberRoot 是 fiber 樹的根節(jié)點的維護者,它的 current 決定使用兩棵 fiber 樹的那一棵(使用了雙緩存技術)。

  1. fiberRoot.current 指向一個 rootFiber 節(jié)點。
  2. rootFiber.stateNode 指向 fiberRoot。
  3. rootNode["__reactContainer$" + randomKey] 指向 rootFiber。

ReactElement

圖片

ReactElement 的 _owner 指向向上最近的類組件或函數組件 fiber。

責任編輯:姜華 來源: 前端西瓜哥
相關推薦

2021-05-11 07:51:30

React ref 前端

2022-12-19 08:17:36

ReactReconciler

2022-07-13 15:23:57

Vue fiberreact前端

2021-07-29 07:55:20

React Fiber架構引擎

2021-08-16 09:59:52

ReactSvelte開發(fā)

2010-06-17 18:57:11

UML對象關系

2022-04-16 20:10:00

React Hookfiber框架

2021-07-30 07:47:36

DOMReactJsx

2016-10-26 20:49:24

ReactJavascript前端

2021-04-09 18:01:03

前端ReactDOM

2025-03-03 00:00:03

2021-06-29 09:47:34

ReactSetState機制

2010-09-28 11:11:23

XML DOMHTML DOM

2010-07-12 14:32:29

UML對象關系

2022-03-22 13:39:10

框架react面試

2022-02-11 13:44:56

fiber架構React

2023-12-01 09:14:58

ReactFiber

2022-11-10 16:55:41

ReactFiber

2010-06-17 19:07:12

UML對象

2021-09-09 10:26:26

Javascript 文檔對象前端
點贊
收藏

51CTO技術棧公眾號