ARTICLE · 1006751
React 源码剖析
React 源码剖析
React 源码的核心,就是靠一套机制把状态变成真实页面。
JSX 只是份“装修图纸”。它最终会变成普通对象。Fiber 树才是真正干活的。旧版递归渲染一口气跑完,容易卡死页面。
Fiber 让渲染能随时暂停。它用三个指针把树拉成链表。这样就能记住位置、下次接着走。React 还会备着两棵树。新内容在后台建好,再一次性换上去。
更新分两步:先算后改。第一步只算不改,被打断也不影响屏幕。第二步才真碰 DOM,这步不能停。useLayoutEffect 就在这儿同步跑完。
Diff 算法靠三个规则提速。只比同层、类型不同就重建、靠 key 认人。列表没 key,React 只能猜,容易误删重建。
Hooks 像一排固定衣帽钩。状态挂在 Fiber 上,每次按顺序取。所以 Hooks 不能在条件里写。setState 也只是排队,不会立刻改值。
Vue 是精确通知,React 是重新算一遍。两者路线不同,但都是为了高效更新界面。
原文React 源码剖析
上海,11小时前,