无从下笔nmd
从不合理的componentWillXXX钩子开始剖析源码 https://juejin.cn/post/6847902224287285255
react 源码/模型解析 https://react.iamkasong.com/preparation/idea.html

hook

setState的update链的构建

  1. function dispatchAction(queue, action) {
  2. // 作用,创建一个单向循环update链
  3. const update = {
  4. action,
  5. next: null
  6. }
  7. // 环状单向链表操作
  8. if (queue.pending === null) {
  9. //当pending为空时候,update是唯一的节点,指向自身
  10. update.next = update;
  11. } else {
  12. //先把update.next指向pending.next,pending.next初始化指向第一个节点,由于最后pending = update,所以说pending.next会一直指向prevPending.next,也就是第一个节点。
  13. update.next = queue.pending.next;
  14. queue.pending.next = update;
  15. }
  16. queue.pending = update;
  17. // 模拟React开始调度更新
  18. schedule();
  19. }

pending
5———->1 就是这样的顺时针循环
| |
4 <-3 <- 2