首先先来看一段代码 ![[简单的 React 思考 - Fiber 创建.png]] 这是 React 中创建 memorizedState 链表的过程,注意其中 if 代码块中,赋值都使用到了两个等于号,因为这个函数的作用是在 Fiber 链表中创建一个新的 memorizedState 对象,那么这个函数的最终目的也是需要把创建好的 memorizedState 给返回出来,这里的两个连续等于号就相当于一直引用最新 Fiber 节点的 memorizedState 对象,最终给返回出来,看懂的时候感觉是真的牛逼 简单的源码解析: 1. 创建一个 hook 对象,这个创建的 hook 对象最终需要插入到 Fiber 节点中,用 next 连接起来形成一个链表,链接的下一个节点就是下一个被使用的 hook 2. 判断 workInProgressHook 是否为空,这个 workInProgressHook 永远指向最新的 Fiber 节点中的 memorizedState - 如果为空表示当前是 Fiber 的第一个 hook,那么就会在当前 Fiber 中初始化 memorizedState 属性并传入创建的 hook 对象用于初始化,并返回最新的 Fiber memorizedState 对象的引用 - 如果不为空,表示之前已经初始化过 hook,会在最新的 Fiber 中创建新的链接 next,并传入创建的 hook 对象用于初始化,返回最新的 Fiber memorizedState 对象的引用