说说 React 中 Fiber、DOM、ReactElement 实例对象之间的引用关系

网站建设4年前发布
94 0 0

202303061529176143d8c78a39f86201c310f9210352327b4381284,大家好,我是前端西瓜哥。,本文探究 fiber、DOM、ReactElement、类组件实例对象之间的引用关系。,20230306152538e406914316991e03365819cc819e98f7587d0b326,原生组件 fiber,指的就是 type 为 "span"、"div" 的 fiber。,20230306152539f4c7b94131d3f5758c1596d8a78c3b4c385d0a469,利用 DOM 节点的 ['__reactFiber$' + randomKey] 属性,我们能拿到对应的原生组件 fiber。,通过这个 fiber,我们其实拿到了整棵 fiber 树。比如我们可以通过递归访问 fiber.return 找到它所在的类组件或函数组件 fiber。,在控制台选中一个元素,然后输入 $0.__reactFi 然后按下 tab 键补全属性,然后回车,我们就拿到了一个原生组件 fiber。,2023030615291711341c503d5ece61a7a386c78fb1cc801108b3237,通过这个小技巧,我们可以去观摩观摩使用了 React 的网站的 fiber 树结构,比如 figma。,202303061525408953c4292ce304a3f91123741f5f8873f5d8d0816,rootFiber 是一棵 fiber 树的根节点。,fiberRoot 是 fiber 树的根节点的维护者,它的 current 决定使用两棵 fiber 树的那一棵(使用了双缓存技术)。,20230306152929f828f5240aafc13bb0b839078145b96abe1716252,ReactElement 的 _owner 指向向上最近的类组件或函数组件 fiber。

© 版权声明

相关文章