workLoopSync
// Neither props nor legacy context changes. Check if there's a pending
// update or context change.
// An update was scheduled on this fiber, but there are no new props
// nor legacy context. Set this to false. If an update queue or context
// consumer produces a changed value, it will set this to true. Otherwise,
// the component will assume the children have not changed and bail out.
didReceiveUpdate = false;
updateHostRoot
React 根据 fiber 不同 tag 执行对应对应的初始化/更新操作,fiberRoot 下的直接子节点就是 HostRoot (3)
,需要渲染的根结点是从这个 fiber{tag=HostRoot}
的 updateQueue
中读取的,生成的 update 实在 ReactDOM.render
是传递的第一个参数,生成的 update 结构如下。其中 payload.element
就是需要渲染的主要 React element 树。
这个结构是 render 初始时 enqueueUpdate
时放入到 concurrentQueues
中的,prepareFreshStack
时又从 concurrentQueues
取出放入到
网友评论