无从下笔nmd
从不合理的componentWillXXX钩子开始剖析源码 https://juejin.cn/post/6847902224287285255
react 源码/模型解析 https://react.iamkasong.com/preparation/idea.html
hook
setState的update链的构建
function dispatchAction(queue, action) {
// 作用,创建一个单向循环update链
const update = {
action,
next: null
}
// 环状单向链表操作
if (queue.pending === null) {
//当pending为空时候,update是唯一的节点,指向自身
update.next = update;
} else {
//先把update.next指向pending.next,pending.next初始化指向第一个节点,由于最后pending = update,所以说pending.next会一直指向prevPending.next,也就是第一个节点。
update.next = queue.pending.next;
queue.pending.next = update;
}
queue.pending = update;
// 模拟React开始调度更新
schedule();
}
pending
5———->1 就是这样的顺时针循环
| |
4 <-3 <- 2