该函数的在createFiberRoot内调用,调用过程如下
function createFiberRoot(containerInfo, tag, hydrate, hydrationCallbacks) {
var root = new FiberRootNode(containerInfo, tag, hydrate);
var uninitializedFiber = createHostRootFiber(tag);
root.current = uninitializedFiber;
uninitializedFiber.stateNode = root;
initializeUpdateQueue(uninitializedFiber);
return root;
}
该函数接受一个fiber(RootFiber),源码如下
function initializeUpdateQueue(fiber) {
var queue = {
baseState: fiber.memoizedState,
firstBaseUpdate: null,
lastBaseUpdate: null,
shared: {
pending: null
},
effects: null
};
fiber.updateQueue = queue;
}
updateQueue是一个与组件更新相关的数据结构,
baseState -> 该fiber本次更新前的state
firstBaseUpdate,lastBaseUpdate -> 均是指向Update链表的指针
shared -> 触发更新时,产生的Update在pending中形成单向环状链表。当由Update计算state时这个环会被剪开并连接在lastBaseUpdate后面。
(由于目前还是前端初学者,对React理解比较差,这一部分参考了React技术揭秘)