react:生命周期

news2024/10/6 8:28:43

一、生命周期阶段

官方文档:https://zh-hans.legacy.reactjs.org/docs/react-component.html

React组件生命周期可分为三个阶段:挂载、更新、卸载

  • 挂载:当组件实例被创建并插入 DOM 中时。其生命周期调用顺序如下:

    • constructor()
    • static getDerivedStateFromProps()
    • render()
    • componentDidMount()
  • 更新:当组件的 props 或 state 发生变化时会触发更新。组件更新的生命周期调用顺序如下:

    • static getDerivedStateFromProps()
    • shouldComponentUpdate()
    • render()
    • getSnapshotBeforeUpdate()
    • componentDidUpdate()
  • 卸载:当组件从 DOM 中移除时

    • componentWillUnmount()

组件生命周期图谱:https://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/

  • 常用生命周期图谱:

在这里插入图片描述

  • 完整生命周期图谱:

在这里插入图片描述

二、常用生命周期方法

方法触发时机作用说明
constructor()组件挂载之前,会调用它的构造函数1、初始化state
2、为事件处理程序绑定实例
如果不初始化 state 或不进行方法绑定,则不需要为 React 组件实现构造函数
render()每次组件渲染都会触发渲染UI1、render() 方法是 class 组件中唯一必须实现的方法
2、render()方法必须有返回值
componentDidMount()组件挂载后(插入 DOM 树中)立即调用1、发送网络请求
2、DOM操作
这个方法是比较适合添加订阅的地方
componentDidUpdate()更新后会被立即调用1、发送网络请求
2、DOM操作
1、如果这里要调用 setState(),必须放在一个如 if 的条件语句中,否则会导致死循环
2、语法:componentDidUpdate(prevProps, prevState, snapshot)
componentWillUnmount()组件卸载及销毁之前直接调用执行清理工作(如:移除监听、清理定时器、取消订阅等)

三、不常用生命周期方法

方法触发时机作用说明
shouldComponentUpdate()当 props 或 state 发生变化时,在 render() 执行之前被调用判断 React 组件的输出是否受当前 state 或 props 更改的影响1、返回布尔值,默认 true
2、语法:shouldComponentUpdate(nextProps, nextState)
3、此方法仅作为性能优化的方式而存在
getDerivedStateFromProps()在调用 render() 之前调用,并且在初始挂载及后续更新时都会被调用此方法适用于罕见的用例,即 state 的值在任何时候都取决于 props1、返回一个对象来更新 state,如果返回 null 则不更新任何内容
2、语法:static getDerivedStateFromProps(props, state)
3、此方法无权访问组件实例
getSnapshotBeforeUpdate()在最近一次渲染输出(提交到 DOM 节点)之前调用它使得组件能在发生更改之前从 DOM 中捕获一些信息(例如,滚动位置)1、返回 snapshot 的值(或 null)
2、语法:getSnapshotBeforeUpdate(prevProps, prevState)

此外,涉及错误边界的两个方法getDerivedStateFromError()componentDidCatch()请参考官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1150757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rfsoc FPGA 49DR 16收16发模块

前面简单介绍过RFSOC板卡 https://blog.csdn.net/jingjiankai5228/article/details/114734631 整体来说RFSOC降低了传统AD DA软硬件开发难度,但是同样存在整数点FS/N谐波大的问题 交织采样是通过多个AD拼接完成的,所以校准比较关键,和以前常…

【算法练习Day33】不同路径不同路径 II

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 不同路径不同路径 II总结&a…

腾讯云轻量服务器“镜像类型”以及“镜像”选择方法

腾讯云轻量应用服务器镜像类型分为应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像,腾讯云百科txybk.com来详细说下不同镜像类型说明和详细介绍: 轻量应用服务器镜像类型说明 腾讯云轻量应用服务器 应用镜像:独有的应用镜像除了包…

RHCE---作业4

一.批量创建账户 .编写脚本for1.sh,使用for循环创建20账户,账户名前缀由用户从键盘输入,账户初始密码由用广输入,例如: test1、test2、test3、.....、 test10 read -p "请输入账户前缀名:" user read -p "请输入…

低代码软件在酒店行业的应用:提升效率与创新!

疫情放开后,旅游业开始兴盛发展,酒店行业也恢复了疫情前的繁忙。但是由于管理架构上的不完善导致很多酒店并不能很好地承接巨大的客流量,而消费者在旅游过程对体验要求是最高的,所以酒店拥有一个能够高效运营的管理系统至关重要。…

前端接口请求支持内容缓存和过期时间

前端接口请求支持内容缓存和过期时间 支持用户自定义缓存时间,在规则时间内读取缓存内容,超出时间后重新请求接口 首先封装一下 axios,这一步可做可不做。但是在实际开发场景中都会对 axios 做二次封装,我们在二次封装的 axios …

Redis入门指南学习笔记(1):初识Redis

一.什么是Redis? Redis全称为Remote Dictionary Server,即远程字典服务器,它采用字典结构来存储数据,并允许其他应用通过TCP协议来访问数据。 字典在众多开发语言中都很常见,其形式为键值对,根据键可以获取相应的值…

文件名替换,关键字替换改名:不同路径中的多个文件如何批量重命名

在日常生活和工作中,我们经常需要处理大量的文件,包括重命名、分类、整理等操作。其中,批量重命名不同路径中的多个文件是一项非常常见的任务。本文将介绍云炫文件管理器常见的批量重命名方法:文件名关键字替换改名,帮…

python类模拟“对战游戏”

Game类含玩家昵称、生命值、攻击力(整数),暴击率、闪避率(小数),在魔术方法init定义;attack方法中实现两个Game实例对战模拟。 (本笔记适合初通Python类class的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.py…

请输入正确的小程序的链接,并确保小程序允许被搜索

公众号文章插入小程序时提示“请输入正确的小程序的链接,并确保小程序允许被搜索”: 这是因为你输入的是小程序路径,不是小程序链接。 如果是你想使用小程序路径,需要点击第一张图中的蓝色字“去搜索”,然后搜索选择你…

少儿编程 2023年9月中国电子学会图形化编程等级考试Scratch编程四级真题解析(判断题)

2023年9月scratch编程等级考试四级真题 判断题(共10题,每题2分,共20分) 11、运行程序后,变量"result"的值是6 答案:对 考点分析:考查积木综合使用,重点考查自定义积木的使用 图中自定义积木实现的功能是获取两个数中最大的那个数并存放在result变量中,左…

Find My水杯|苹果Find My技术与水杯结合,智能防丢,全球定位

2018年中国智能水杯行业的市场规模约为32亿元,而到2021年,这一市场规模将达到45亿元,增长率约为8.6%。随着智能科技的不断深入发展,智能水杯也越来越受到消费者的青睐,他们更加偏爱智能水杯带来的便捷。智能水杯可以监…

Webpack5中devServer配置contentBase报错的问题

结果报错,没有contentBase这个属性,已经被弃用了。 新的配置方式: const path require(path);module.exports {//...devServer: {static: {directory: path.join(__dirname, public),},compress: true,port: 9000,}, };

关于Spring和SpringBoot中对配置文件的读取

Spring读取xml文件 具体流程见网址Spring源码分析2 — spring XML配置文件的解析流程 - 知乎 (zhihu.com) 我这里只做一下总结和自己的理解: (1)通过getConfigLocations方法, 从web.xml文件中读取配置文件地址,如果web.xml中读取…

ES 8.x新特性一览(完整版)

一、看点 在 2022 年 2 月 11 日,Elasticsearch(ES)正式发布了 8.0 版本,而截止到 2023 年 10 月,历经一年半时间,ES官方已经连续发布了多个版本,最新版本为 8.10.4。这一系列的更新引入了众多引…

【多线程面试题二十】、 如何实现互斥锁(mutex)?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:如何实现互斥锁&#xf…

JavaSE20——IO流

IO流 1 Java IO流 I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。Java程序中,对于数据的输入/输出操作以“流(stream)” 的方式进行 I(Input): 输入流指的是将数据以…

世界前沿技术发展报告2023《世界航空技术发展报告》(七)机载系统与武器技术

(七)机载系统与武器技术 1.机载系统技术1.1 美国推进商用5G技术在航空装备中的应用1.2 人工智能技术在航空中的应用日益增多1.3 美国空军研究实验室推出综合座舱感知技术1.4 美国空军为固定翼飞机驾驶员选定新一代头盔1.5 美国DARPA探索通过机载光能量中…

用LibreOffice在excel中画折线图

数据表格如下。假设想以x列为横坐标,y1和y2列分别为纵坐标画折线图。 选择插入-》图表: 选择折线图-》点和线,然后点击“下一步”: 选择:列中包含数据序列,然后点击完成(因为图挡住了数据…