⚡ 30 秒速记

  • 核心判断:生命周期是框架围绕创建、挂载、更新和卸载安排用户副作用的时序契约
  • 原理主线:围绕 「进化的生命周期方法:React 16 生」、「Mounting 阶段:组件的初始化渲染」、「Updating 阶段:组件的更新」 建立输入、状态变化与输出之间的因果关系
  • 文章范围:解析了React 16及以上版本生命周期方法的变更原因与实现原理,结合生命周期流程图和代码示例,帮助开发者理解新旧生命周期的区别及其对组件开发的影响。
  • 边界与代价:父子组件顺序、异步调度和 React 并发渲染会让“调用过函数”不等于“已经提交到界面”
  • 工程落地:副作用必须放在语义匹配的阶段,并在重跑、卸载或依赖变化时正确清理

React 16 更改生命周期,本质上是为了适配可中断的 Fiber 渲染,并减少副作用失控。 render 阶段可能暂停、终止或重做,旧的 componentWillMountcomponentWillReceivePropscomponentWillUpdate 若发请求或操作 DOM,就可能被重复执行。新 API 把职责收紧:getDerivedStateFromProps 只负责由 props 派生状态,更新前读取 DOM 则交给 getSnapshotBeforeUpdate,再由同步提交阶段的 componentDidUpdate 处理副作用。

这篇文章不要按 API 清单来背。先用上面的 Mind Map 建立全局结构,再通过交互 DEMO 观察正常路径和边界路径如何改变状态;阅读正文时重点核对每一步的输入、负责执行的参与者、产生的中间状态以及最终可观察结果。遇到版本敏感结论,要把“历史实现”“当前行为”和“工程兼容策略”分开说明;遇到性能或架构取舍,则用实际指标、失败现象和验证手段支撑判断。

版本校准: 本文若分析 ReactDOM.render、旧生命周期或栈调和,应把它视为理解架构演进的历史路径。React 19 已移除 ReactDOM.render,当前客户端入口使用 createRoot;并发渲染也必须区分可中断的渲染阶段与同步提交阶段。迁移前对照 React 19 官方升级指南

# 进化的生命周期方法:React 16 生命周期工作流详解

来源于:https://projects.wojtekmaj.pl/react-lifecycle-methods-diagram

在React 16.4之后,React 生命周期在之前版本的基础上又经历了一次微调,其实就调在了更新过程的getDerivedStateFromProps 这个生命周期上

这里我先提供一个 Demo,它将辅助你理解新的生命周期。Demo 代码如下

webapp
公众号
开发者导航
切换夜间模式
点击侧边栏上一篇
点击侧边栏下一篇
折叠侧边栏
收起全部