模拟实现
2023年06月11日
一、/packages/react-reconciler/updateQueue.js createUpdateQueue()
export const createUpdateQueue = () => {
return {
shared: {
pending: null
},
dispatch: null
};
};
二、/packages/react-reconciler/updateQueue.js createUpdate()
export const createUpdate = (
action,
lane,
hasEagerState = false,
eagerState = null
) => {
return {
lane,
action,
next: null,
hasEagerState,
eagerState
};
};
三、/packages/react-reconciler/updateQueue.js enqueueUpdate()
export const enqueueUpdate = (updateQueue, update, fiber, lane) => {
const pending = updateQueue.shared.pending;
if (pending === null) {
update.next = update;
} else {
update.next = pending.next;
pending.next = update;
}
updateQueue.shared.pending = update;
fiber.lanes = mergeLanes(fiber.lanes, lane);
const alternate = fiber.alternate;
if (alternate !== null) {
alternate.lanes = mergeLanes(alternate.lanes, lane);
}
};