
4.17 源码走读:从 `createRoot` 到 `commitRoot`
一次更新的完整链路是「updateContainer 建更新 → scheduleUpdateOnFiber 标记 + 调度 → ensureRootIsScheduled 选优先级并交给 Scheduler → performConcurrentWorkOnRoot 在时间片里跑 workLoop…

一次更新的完整链路是「updateContainer 建更新 → scheduleUpdateOnFiber 标记 + 调度 → ensureRootIsScheduled 选优先级并交给 Scheduler → performConcurrentWorkOnRoot 在时间片里跑 workLoop…

Suspense 不只是「显示 fallback」——它背后是一套调度机制:挂起会被登记为「挂起的车道(suspendedLanes)」并监听 promise 完成(ping),而是否显示 fallback 取决于「这次更新是不是 transition」(transition 中挂起会保留旧内容)。

压缩、裁剪、加水印、抠图、拼接都在本地完成。不限张数、不限次数,图片不会传到服务器。

React Compiler 是一套「把 React 代码降到一个可分析的中间表示(HIR + SSA),识别出『哪些计算依赖响应式输入』,再自动插入 useMemoCache 读写」的编译管线——它的核心概念是「Reactive Scope(响应式作用域)」,而不是「给每个变量加 useMemo」…

PPR 把「页面级的静态/动态取舍」变成「页面内部的取舍」——构建时预渲染出「静态外壳」,请求时立刻从 CDN 返回它,同时把标记为「洞(holes)」的动态部分流式填充进去;于是「TTFB 像 SSG,数据像 SSR」。


Server Components 的本质是「组件在服务端执行,产出的不是 HTML,而是一份可流式传输的『UI 描述』(Flight payload)」——客户端拿到它之后,才把这份描述渲染成 DOM;它与 SSR 回答的是两个不同问题,因此可以叠加使用。

React 19 的主线是「把异步与表单做成一等公民」——Actions(useActionState / useFormStatus / useOptimistic)、use API、ref 作为普通 prop、文档元数据提升;

React 18 的主线是「并发渲染」——配套 createRoot、自动批处理、useTransition/useDeferredValue/useId/useSyncExternalStore、Suspense 的 SSR 改进,以及 StrictMode 更严格的行为。

React 自己实现了一套合成事件(SyntheticEvent)系统——事件统一委托到根容器、跨浏览器行为一致、与 React 的更新机制协同;React 17 起委托目标从 document 改为根容器。

并发渲染(Concurrent Rendering)不是多线程,而是「渲染过程可以被中断、可以被丢弃、可以按优先级调度」——它让紧急更新(如输入)不被长渲染阻塞,也是 useTransition、useDeferredValue、Suspense 的基础。
最新评论
读过书不知道欧·亨利的人少。教科书上选文有
这小生活不错呀
不错,必须顶一下!
看着你还在坚持,很好
看来忙了也没时间更新博客了
NIce。学习了。。。。
网站不错!!!!
简洁实用,好文章!