Skip to content

React 系统课程:从界面描述到可靠交付 ​

学习路线负责安排阅读顺序;这里说明全书采用的运行环境、思考模型和边界。准备好后可从第一章开始。

React 能力地图:UI、状态、架构、外部系统、并发、数据边界与交付

React 组件每次执行都会根据当前 props 和 state 产生一份 UI 描述。事件可以请求新的状态;React 比较新旧树并提交必要的 DOM 变化;只有确实要和网络、计时器、订阅或浏览器 DOM 等外部系统保持同步时,才进入 Effect。全书会反复使用这条主线解释问题,而不是按 Hook 名称堆 API。

运行环境 ​

正文以 React 19 稳定版、函数组件和现代浏览器为基线。本轮示例验证使用 React / React DOM 19.2.7;保持两个包版本一致。先准备 Node 22.12 或更高的兼容版本,再创建普通 Vite React 项目:

bash
npm create vite@latest react-lab -- --template react
cd react-lab
npm install
npm run dev

标为 src/App.jsx 的代码块是完整组件,可以直接替换脚手架中的同名文件;多文件实验会分别写出文件名。脚手架版本会变化,安装器若提示更高的 Node 要求,应先满足它再继续。确认 react 与 react-dom 使用同一 React 19 稳定版本,不把 canary API 混入主线。

保留入口的 StrictMode。开发环境额外执行渲染、Effect 和 ref 检查时,重点观察清理与最终状态,不把“控制台恰好打印一次”当语义保证。性能对照使用普通 react 模板,暂不启用 React Compiler;否则自动记忆化会改变手动优化实验的条件。每个实验独立替换文件,避免把不同小节的同名组件拼到一起。

多数核心章节不需要 React 之外的运行时依赖。路由、数据缓存和组件测试本来就属于独立工具层,相关章节会明确区分:React 保证什么、浏览器提供什么、第三方工具又增加什么。

全书使用的四层模型 ​

  1. 输入:props、URL、用户事件和服务端结果从哪里进入,哪些值可信。
  2. 渲染:组件只读取当前快照并描述 UI;这一阶段必须可以被 React 重做。
  3. 提交与事件:React 提交 DOM,用户事件再请求下一次状态变化。
  4. 外部同步:连接、订阅、请求和命令式 DOM 由 Effect 或事件负责,并拥有对称的停止方式。

key、组件类型与树中位置决定状态身份;prop 引用比较影响哪些渲染工作可以复用;更新队列决定下一次 state;Transition 改变更新优先级;Suspense 和错误边界决定等待与失败显示在哪里。这些机制都落在上述四层之一,不需要另造一套神秘生命周期。

怎样完成一篇 ​

阅读示例前先写下预测,再按正文步骤触发正常路径和故障路径。看到输出后,不只记结论,还要解释是哪次渲染、哪个事件或哪轮外部同步产生了它。随后改变一个条件,例如重排列表、加速第二个请求、让提交失败或缩短性能预算,检查原来的解释是否仍成立。

每篇末尾的练习是独立任务,题目会给出输入、可观察结果和关键边界。先只依靠正文完成,再到本章答案页比较实现与失败原因。答案不是首次运行环境,也不会替正文补讲关键 API。

课程边界 ​

  • JavaScript 语言细节由 JavaScript 系统课程讲授,本书只在 React 语义需要时回顾。
  • React 核心没有内置通用路由、服务端数据缓存、认证或权限系统;第七章从 URL 和缓存进入 SSR 与水合,分别展示 Node 生成 HTML、浏览器接管交互的过程,再解释 Server Components 依赖的框架构建与传输。
  • 现代函数组件是新代码主线;类组件维护篇在第四章后系统讲解实例、更新、生命周期、组合、错误恢复与渐进迁移。类组件在React19仍受支持,维护风格不等于历史版本。React17/18/19的重要入口与语义差异在独立版本实验中比较。
  • Server Actions 的传输与部署由具体框架实现;React 19 的 form Actions、useActionState 和 useOptimistic 可以在客户端主线中学习,但服务端校验与幂等不会因此自动完成。
  • 性能数字只在给定设备、构建模式和输入下成立。先证明行为等价,再讨论优化。

从基础走向机制 ​

第一章先使用受控状态和状态提升,再观察列表重排;第二章展开其快照和更新规则。第三章最后的引用身份与记忆化是第五章并发实验的前置,不能跳过后直接把慢计算放进 Transition。第四章的节点引用、布局测量与 Portal 则为第七章的 HTML 接管建立浏览器侧认识。

完成第四章后,先读类组件维护篇再进入第五章。这样错误边界里的class、静态派生方法和重置协议有已经学过的前置;第七节历史对照使用独立目录,不降级现代课程实验。

已有经验时可以从学习路线进入专题。每篇的深入内容仍在正文阅读链上,练习只改变已学条件,不要求在阶段末另做大型项目。

完成全书后,你应该能面对一个陌生组件,画出它的数据来源、状态所有者、身份线索、更新队列、外部资源责任以及等待和失败边界,并为其中一个关键判断写出可复查实验。

用心记录每一步成长