当前位置: 首页 > news >正文

React:生命周期

React 生命周期分为三个阶段:挂载(Mounting)、更新(Updating)和卸载(Unmounting)

挂载阶段(Mounting)

一般会在这个阶段做一些数据获取、事件监听、向服务端发送请求、事件绑定等操作

constructor()
初始化状态(state)和绑定方法。通常在构造函数中完成初始数据的设置。

static getDerivedStateFromProps(props, state)
静态方法
时机:在 render 前调用,用于根据props更新state。必须返回一个对象或null。

render()
返回JSX结构,负责组件的渲染逻辑。必须为纯函数,不直接修改状态或与浏览器交互。

componentDidMount()
组件挂载完成后触发。适合执行DOM操作、网络请求或订阅事件等副作用。


更新阶段(Updating)

static getDerivedStateFromProps(props, state)
与挂载阶段相同,在每次更新前调用。

shouldComponentUpdate(nextProps, nextState)
通过返回truefalse决定是否重新渲染。用于性能优化。

render()
重新渲染组件。

getSnapshotBeforeUpdate(prevProps, prevState)
时机:在 render 之后执行
目的:获取组件更新前的信息
在DOM更新前捕获信息(如滚动位置)。返回值传给componentDidUpdate

componentDidUpdate(prevProps, prevState, snapshot)
时机:组件更新完成后执行,可操作DOM或发起网络请求。


卸载阶段(Unmounting)

componentWillUnmount()
时机:组件卸载前调用,用于清理定时器、取消网络请求或移除事件监听。


废弃的生命周期方法

部分方法(如componentWillMountcomponentWillReceiveProps)已被标记为废弃,推荐使用替代方案(如getDerivedStateFromProps)。

函数组件的替代方案

通过useEffect Hook模拟生命周期行为:

  • useEffect(() => {}, []) 替代componentDidMount(依赖项为空数组)。
  • useEffect(() => { return () => {} }) 替代componentWillUnmount(返回清理函数)。
  • useEffect(() => {}, [deps]) 替代componentDidUpdate(依赖项变化时触发)。
http://www.lryc.cn/news/612504.html

相关文章:

  • antd组件select下拉数据分页加载
  • LeetCode 分类刷题:611. 有效三角形的个数
  • 【前端】Vite中import.meta功能详解
  • 深度修改elementUI样式思路
  • 《Day2-PyTorch Tensor 从入门到实践:核心操作与避坑指南》
  • 磁悬浮转子变转速工况下的振动抑制全解析
  • Conditional Modeling Based Automatic Video Summarization
  • 云平台托管集群:EKS、GKE、AKS 深度解析与选型指南-第二章
  • [Python 基础课程]猜数字游戏
  • HIVE 窗口函数处理重复数据
  • 【C/C++】形参、实参相关内容整理
  • GISBox中OSGB数据转3DTiles格式指南
  • 开源流媒体服务器ZLMediaKit 的Java Api实现的Java版ZLMediaKit流媒体服务器-二开视频对话
  • java 之 继承
  • 【Java】HashMap的key可以为null吗?如何存储的?
  • JavaScript 基础语法
  • TDengine IDMP 背后的技术三问:目录、标准与情景
  • TCP的三次握手和四次挥手实现过程。以及为什么需要三次握手?四次挥手?
  • 8、项目管理
  • 力扣 hot100 Day67
  • 二、Envoy静态配置
  • CentOS8.5安装19c单机告警及处理
  • CS课程项目设计8:基于Canvas支持AI人机对战的五子棋游戏
  • LeetCode 面试经典 150_数组/字符串_O(1)时间插入、删除和获取随机元素(12_380_C++_中等)(哈希表)
  • Linux firewall 防火墙管理
  • Linux systemd 系统管理:systemctl 控制服务与守护进程
  • 深入理解 qRegisterMetaType<T>()
  • 【数据可视化-82】中国城市幸福指数可视化分析:Python + PyEcharts 打造炫酷城市幸福指数可视化大屏
  • JAVA算法练习题day9
  • 蓝桥杯----锁存器、LED、蜂鸣器、继电器、Motor