react17中使用setState导致了死循环

在使用setState时发生死循环的错误,可能的原因是在这三个地方使用了setState:

  • componentDidUpdate;
  • componentWillUpdate;
  • render。

为什么会这样?

       每次渲染页面的时候就会调用render,render里面是setState,就要执行setState,而每次执行setState就要重新渲染页面,要渲染调用render,render里执行setState,又重新渲染调用render—setState–render—setState…就这样一直发生死循环。

       只需将 setState() 调用移到 render() 函数之外即可。

       如果在组件挂载后必须初始化状态(也许是从API端点提取数据),请在 componentDidMount() 中进行。

       如果可以在组件挂载之前初始化状态,也可以使用构造函数来完成。

参考内容:react循环setstate_新手React开发人员容易做错的5件事

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

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

相关文章

生活中的数学 --- 等额本息贷款和等额本金贷款的月供应该怎么算?

等额本息贷款和等额本金贷款的月供应该怎么算? 从一个例子开始,假设我要从银行贷款36万(即,本金),银行给出的贷款年利率是12%(月利率为年利率除以12),贷款半年(6个月),按月还款,分6期还完。 问分…

电池二次利用走向可持续大循环周期的潜力和挑战(第二篇)

一、二次利用风险 电动汽车的当前电池信息,如年份、容量和制造商,通常是相互关联和不完整的。再加上电池内部的电化学变化,SLB在包括安全和环境在内的一些领域存在很大的风险,这表明短期内梯次利用仍然是一个不成熟的方案。 1.1 安…

在mysql中如何更新数据呢?

如何更新一条数据? 在 MySQL 中,更新一条数据可以使用 UPDATE 语句。以下是更新一条数据的基本语法: UPDATE table_name SET column1 value1, column2 value2,... WHERE condition;其中: table_name:要更新的表的…

Linux 系统下对于 MySQL 的初级操作

由于公司老板想把早已封存的服务器陈年老码捣鼓一下,所以找了一个外援,我则是配合提供支持。但是过程并不顺利。至少 5 年以上的间隔,导致外援查看的时候发现很多代码和配置是缺失的,目前卡在数据库部分,而我这边就帮忙…

案例:逻辑复制把checkpoint、walsender、backup全部卡死

问题现象 备份进程命令pg_start_backup()被checkpoint进程阻塞,checkpoint被逻辑复制walsender进程阻塞。业务虽然还在继续运行,但是备份、checkpoint、逻辑复制全部hang死。 pg_stat_activity 中有两个明显异常的等待事件:replication_slo…

libVLC 提取视频帧使用QGraphicsView渲染

在前面章节中,我们讲解了如何使用QWidget渲染每一帧视频数据,这种方法对 CPU 负荷较高。 libVLC 提取视频帧使用QWidget渲染-CSDN博客 后面又讲解了使用OpenGL渲染每一帧视频数据,使用 OpenGL去绘制,利用 GPU 减轻 CPU 计算负荷…

亚马逊AWS永久免费数据库

Amazon DynamoDB 是一项无服务器的 NoSQL 数据库服务,您可以通过它来开发任何规模的现代应用程序。作为无服务器数据库,您只需按使用量为其付费,DynamoDB 可以扩展到零,没有冷启动,没有版本升级,没有维护窗…

交换机与队列的介绍

1.流程 首先先介绍一个简单的一个消息推送到接收的流程,提供一个简单的图 黄色的圈圈就是我们的消息推送服务,将消息推送到 中间方框里面也就是 rabbitMq的服务器,然后经过服务器里面的交换机、队列等各种关系(后面会详细讲&…

Github 2024-04-10 开源项目日报Top10

根据Github Trendings的统计,今日(2024-04-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目2JavaScript项目1Shell项目1Go项目1非开发语言项目1免费API集合 创建周期:2900 天开发语言:Python协议类型:MIT L…

RabbitMQ如何保证消息的幂等性???

在RabbitMQ中,保证消费者的幂等性主要依赖于业务设计和实现,而非RabbitMQ本身提供的一种直接功能。 在基于Spring Boot整合RabbitMQ的场景下,要保证消费者的幂等性,通常需要结合业务逻辑设计以及额外的技术手段来实现。以下是一个…

Elasticsearch 悬挂索引分析和自己的一点见解

在 Elasticsearch 的实战中,悬挂索引是一个既常见又容易引起困扰的概念。 今天,我将分享一次处理集群状态为RED,原因为DANGLING_INDEX_IMPORTED 的实战经验,深入探讨悬挂索引的定义、产生原因、管理方法,以及如何有效…

网关之王:Gateway基本配置技术分享

一、网关的基本概念和功能,以及其在网络中的作用。 网关是指一个网络中从一个协议簇(如TCP/IP)的网络末端,连接到另一个协议簇(如IPX/SPX)的网络的节点。它是网络通信的必要组件,主要用于将同一…

[Linux - C语言] 自主Shell

[Linux - C语言] 自主Shell [Linux - C语言] 自主Shell逻辑策划 main()打印命令行 void MakeCommandLineAndPrint()用户名 USER主机名 HOSTNAME当前目录 PWDSkipPath 切割目录打印命令行 获取用户字符串 int GetUserCommand()检查重定向 void CheckRedir()切割字符 void SplitC…

Rust - 数据类型

Rust 是静态编译语言,在编译时必须知道所有变量的类型。 基于使用的值,编译器通常能推断出它的具体类型,但如果可能的类型比较多,例如把String转换为整数的parse方法,就必须添加类型的标注,否则编译会报错…

JVM字节码与类的加载——类的加载过程详解

文章目录 1、概述2、加载(Loading)阶段2.1、加载完成的操作2.2、二进制流的获取方式2.3、类模型与Class实例的位置2.4、数组类的加载 3、链接(Linking)阶段3.1、链接阶段之验证(Verification)3.1.1、格式检查3.1.2、字节码的语义检查3.1.3、字节码验证3.1.4、符号引用验证 3.2、…

Harmony鸿蒙南向驱动开发-I3C

I3C(Improved Inter Integrated Circuit)总线是由MIPI Alliance开发的一种简单、低成本的双向二线制同步串行总线。 I3C是两线双向串行总线,针对多个传感器从设备进行了优化,并且一次只能由一个I3C主设备控制。相比于I2C&#xf…

langchain LCEL,prompt模块,outputparse输出模块

目录 基本代码 prompt模块 prompt模版控制长度 outputparse格式化输出 LangChain表达式语言,或者LCEL,是一种声明式的方式,可以轻松地将链条组合在一起 langchian 可以使用 通义千问,我们用通义千问,用法也要申请…

Stream流中方法详解

中间方法和终结方法 以下传入参数均表示lambda表达式中的参数 forEach():遍历集合,对流中的每个元素执行指定的操作 ArrayList<String> list new ArrayList<>(Arrays.asList("a","b","c","d")); list.stream().forEac…

基于ros的相机内参标定过程

基于ros的相机内参标定过程 1. 安装还对应相机的驱动2. 启动相机节点发布主题3. 下载camera_calibartion4. 将红框的文件夹复制在自己的工作空间里边&#xff0c;编译5. 标定完成以后&#xff0c;生成内参参数文件camera.yaml。将文件放在对应的路径下&#xff0c;修改config文…