From 2251ce250efe0c9c290464812eb08515a84e7d85 Mon Sep 17 00:00:00 2001 From: YuJian Date: Mon, 18 Apr 2022 16:36:12 +0800 Subject: [PATCH] vault backup: 2022-04-18 16:36:12 --- 自顶向下学 React 源码/React 源码的碎片记录.md | 2 +- 自顶向下学 React 源码/奇怪的疑惑.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/自顶向下学 React 源码/React 源码的碎片记录.md b/自顶向下学 React 源码/React 源码的碎片记录.md index b5f0ce3..4a5b35a 100644 --- a/自顶向下学 React 源码/React 源码的碎片记录.md +++ b/自顶向下学 React 源码/React 源码的碎片记录.md @@ -40,4 +40,4 @@ - 对于 Function Component 会调用 renderWithHooks 方法,这个方法会执行 Function Component 自身,返回的值就是 React.createElement 返回的 JSX 对象,这里和 Host Component 不一样 - reconcileChildren 根据 current Fiber 树、 WorkInProgress Fiber 树和 JSX 对象来生成子 Fiber 节点 - WorkInProgress Fiber 节点不存在 alternate 有可能表示,在上一次更新中不存在这个 Fiber 节点 -- 对于一个 Host Components la'ios \ No newline at end of file +- 对于一个 Host Components 来说,如果它有属性的增删改,那么它的Fiber 的 updateQueue 属性会赋值对应的一个数组,这个数组是由两轮属性的循环生成的,属性第 i 项为属性名,第 i + 1 项为属性值,在这个数组存在的情况下,也就是属性有改变的情况下会进入 markUpdate 函数的逻辑,这个函数会为当前的 Fiber 节点打上 Update 的标记(effectTag) \ No newline at end of file diff --git a/自顶向下学 React 源码/奇怪的疑惑.md b/自顶向下学 React 源码/奇怪的疑惑.md index 7c8cbdf..ef67fa9 100644 --- a/自顶向下学 React 源码/奇怪的疑惑.md +++ b/自顶向下学 React 源码/奇怪的疑惑.md @@ -9,4 +9,5 @@ - [ ] 什么是按位或? - [ ] 为什么 React 要尽可能的复用 Fiber, 是因为创建新的 Fiber 非常消耗性能吗? - [ ] 是不是在 React 运行时中,自始至终都存在两个 Fiber Tree,只是他们的名字会来回交换,一会我是 current 一会他是 current ? -- [ ] reconcileChildren 的具体功能? \ No newline at end of file +- [ ] reconcileChildren 的具体功能? +- [ ] reconciler 阶段会深度优先遍历找出所有需要gen'xi \ No newline at end of file