React 渲染函数render、初始化函数、更新函数运行了两次,原因为何,如何解决? React.StrictMode

news2024/12/24 22:02:23

文章目录

    • Intro
    • 官网解释
    • 解决
    • 另一篇官网文章——初始化函数或更新函数运行了两次

Intro

我在用 react 写一个 demo ,当我在某个自定义组件的 return 语句之前加上一句log之后,发现:每次页面重新渲染,该行日志都打印了两次!
慌!难道我的自定义组件哪里写得有问题?

第一步验证:找到这个 demo 应用的根节点 App.jsx ,在其 return 语句之前加一行日志,重新渲染页面,观察:日志会被打印几次?
也是两次!

那么错误就不是发生在我的自定义组件处(它总不能影响到外层未修改的组件的行为表现吧)。
以下为我的项目截图:
在这里插入图片描述

官网解释

搜索之后,得出结论:
React 在其升级迭代的过程中,为帮助其用户(众多开发人员)减少升级过程中的bug,提供了一个叫做 StrictMode 的API。这个API有如下特性(见 https://react.dev/reference/react/StrictMode#strictmode ):

  1. 启用范围:可对整个应用(中的组件)启用该模式,也可以对部分组件启用该模式。

  2. StrictMode这个API会导致两次渲染,目的是为了更好地找出程序bug,以修复之(一些已被弃用的、受警告的API也可以被发现,改正)。
    在这里插入图片描述

  3. 启用方式:用React.StrictMode包在想应用该模式的组件外层即可,包在不同层级会影响启用范围大小。

  4. 你会不会担心这个二次渲染影响程序性能?别怕。这个特性仅开发阶段才有,官网原文:development-only
    在这里插入图片描述

解决

既然是官方为减少我们的bug出现率而提供的、仅在开发阶段出现的API特性,那其实我们可以不用很担心 React组件重复渲染对我们程序性能的影响。

如果你还是不喜欢,取消该特性即可。
全局搜索 StrictMode,移除该代码即可(写法略,能碰到这个问题且产生疑问、搜索到此处的同行应该懂怎么移除)。

另一篇官网文章——初始化函数或更新函数运行了两次

初始化函数或更新函数运行了两次
https://zh-hans.react.dev/reference/react/useState#my-initializer-or-updater-function-runs-twice
在这里插入图片描述
图中的内容表述了以下两点:

  1. 为什么我们的 react 组件执行了两次(render渲染方法、构造方法、state更新方法等)?
    这是因为React的设计中,在严格模式(StrictMode)下就是如此(执行两次)。

  2. 这个 “严格模式下 react组件的方法执行两次”的设计目的是什么?
    减少bug(图中下半部分为一个实例)。

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

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

相关文章

加油卡APP开发,汽车加油便捷新方式

随着生活水平的提高,人们对汽车的需求量不断上升,加油成为了大众生活中不可缺少的开销,为节省开销,如何优惠加油成为了大众所追求的事。因此,越来越多的加油卡APP成为了汽车加油市场的发展“主流”。在汽车加油规模上升…

数据结构错题答案汇总

王道学习 第一章 绪论 1.1 3.A 数据的逻辑结构是从面向实际问题的角度出发的,只采用抽象表达方式,独立于存储结构,数据的存储方式有多种不同的选择;而数据的存储结构是逻辑结构在计算机上的映射,它不能独立于逻辑结构而存在。数…

PFC旁路二极管、继电器驱动电路以及PFC主功率

R001和R002以及R003三个电阻作用是限放X电容上的电 整流桥串联两个BJ1和BJ2 电容C3:给整流桥储能,给后续llc供电 PFC工作是正弦波上叠加高频电流 PFC功率部分 2个PFC电感(选择两个磁芯骨架小,有利于散热)、2个续流二极管&…

Mac 下载并激活IDEA

1.https://3.jetbra.in 打开这个网站,点击第一个网速比较快的连接 2.在新页面顶部有一个蓝色的下载链接文字< jetbra.zip(20220801) >点击下载 3.步骤2打开的页面不要关闭后面还有用 4.在idea官网下载idea对应的版本 https://www.jetbrains.com/idea/download/other.htm…

linux配置用户

一&#xff0c;安装sudo与确保在管理员用户下 apt update apt install sudo -y 切换用户&#xff1a;密码不会显示&#xff0c;一个个输入然后回车。//图中是zfxt-->Stable用户切换 su root //root为用户名 以其他用户执行命令&#xff1a; su root ping baidu.com //su…

不测评不知道,该这款主食冻干嚣张!PR、希喂、扑呀真实测评

主食冻干喂养越来越火了&#xff0c;除了知名的“四大金刚”K9、VE、SC、PR之外&#xff0c;也有像希喂、扑呀这类以营养、高肉含量为切入点的新锐品牌&#xff0c;各大猫粮商更是纷纷推出了自家的主食冻干产品。目前关于主食冻干的讨论也很多&#xff0c;但大多数还是以科普和…

恭喜!X医生斩获英国伦敦大学学院访问学者邀请函

伦敦大学学院&#xff08;University College London&#xff0c;简称&#xff1a;UCL&#xff09;&#xff0c;1826年创立于英国伦敦&#xff0c;是一所公立研究型大学。伦敦大学联盟的创校学院、罗素大学集团和欧洲研究型大学联盟创始成员&#xff0c;也是金三角名校和G5之一…

5.1 Python 函数的参数类型

1. 实参与形参 形参: 函数定义阶段, 括号内定义的参数名(变量名), 形参的表现形式只有一种就是参数命. 实参: 函数调用阶段, 括号内传入的参数值(变量值), 实参的表现形式有很多种(核心: 可以引用到值).两者之间的关系: 函数调用阶段 --> 实参的值绑定给形参名. 函数调用完…

技术革新,智绘未来丨悦数图数据库 v5.0 重磅亮相 WAIC 2024

本次 WAIC&#xff08;世界人工智能大会&#xff09;2024 将于7 月 4 日- 7 日在上海世博展览馆**举行&#xff0c;本次 WAIC 2024 围绕“以共商促共享 以善治促善智”为主题&#xff0c;杭州悦数科技有限公司将携最新的悦数图数据库 v5.0 亮相 E805 展位。作为国内领先的图数据…

【Linux】进程控制2——进程等待(waitwaitpid)

1. 进程等待必要性 我们知道&#xff0c;子进程退出&#xff0c;父进程如果不管不顾&#xff0c;就可能造成"僵尸进程”的问题&#xff0c;进而造成内存泄漏。另外&#xff0c;进程一旦变成僵尸状态&#xff0c;那就刀枪不入&#xff0c;“杀人不眨眼”的kill -9 也无能为…

node配置热更新nodemon

nodemon 安装 全局或者开发依赖都可以 npm install nodemon -g npm install nodemon -D配置 文件配置nodemon.json {"watch": [ // 改动后需要编译成es5的源文件目录和配置等目录以及文件"./src","./conf",".env"],"ext&quo…

QT——设计概述

一、QT的概述 1、QT是什么? Qt是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。 2、QT可以做什么? Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应…

同三维T80005EH4 H.265 4路高清HDMI编码器

同三维T80005EH4 H.265 4路高清HDMI编码器 4路HDMI输入2路3.5音频输入&#xff0c;第1路和第2路HDMI可支持4K30&#xff0c;其它支持高清1080P60 产品简介&#xff1a; 同三维T80005EH4 4路HDMI高清H.265编码器采用最新高效H.265高清数字视频压缩技术&#xff0c;具备稳定…

【动态规划算法题记录】70. 爬楼梯——递归/动态规划

题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 题目分析 递归法&#xff08;超出时间限制&#xff09; 递归参数与返回值 void reversal(int i, int k) 每次我们处理第i个台阶到第k个…

具有不确定性感知注意机制的肺结节分割和不确定区域预测| 文献速递-深度学习结合医疗影像疾病诊断与病灶分割

Title 题目 Lung Nodule Segmentation and UncertainRegion Prediction With an Uncertainty-Aware Attention Mechanism 具有不确定性感知注意机制的肺结节分割和不确定区域预测 01 文献速递介绍 肺结节分割在肺癌计算机辅助诊断&#xff08;CAD&#xff09;系统中至关重…

什么是1+N+b模式的费用直投门店管理体系?

在快消行业&#xff0c;为争夺市场份额&#xff0c;企业每年需投入大量资金。在此过程中&#xff0c;您是否也像李总一样面临着如下困惑&#xff1a; 为解决李总所面临的难题&#xff0c;纷享销客秉承“终端为王”的经营理念&#xff0c;创造性地推出了基于1Nb模式的费用直投门…

携手知名律所,合合信息旗下名片全能王打造数字化名片“新范式”

在低碳办公理念盛行的当下&#xff0c;数字名片成为商务交流的新方式&#xff0c;以数字化智能化赋能绿色化。近期&#xff0c;合合信息旗下名片全能王企业数字名片升级&#xff0c;与上海市律师协会、广州市律师协会、北京大成&#xff08;上海&#xff09;律师事务所等多家律…

如何用Xinstall CPS结算系统打破传统营销桎梏,实现用户增长?

在互联网流量红利逐渐衰退的今天&#xff0c;App推广和运营面临着前所未有的挑战。如何快速搭建起满足用户需求的运营体系&#xff0c;成为了众多企业急待解决的问题。而在这个关键时刻&#xff0c;Xinstall CPS结算系统应运而生&#xff0c;以其独特的优势帮助企业解决了一系列…

ESP-IDF OTA升级过程中遇到的“esp_transport_read returned:-1 and errno:128”问题(2)

接前一篇文章:ESP-IDF OTA升级过程中遇到的“esp_transport_read returned:-1 and errno:128”问题(1) 上一回讲了笔者在进行ESP-IDF的OTA调试和测试时遇到了一个新问题:大升级文件下载失败。 在网上寻找解决办法无果后,求助于乐鑫的技术支持,答复说官方例程没有问题。笔…

Django之云存储(一)

一、介绍 用户上传的文件以及项目中使用的静态文件,除了保存在本地服务器,还在可以保存在云服务中,比如: 阿里云七牛云(课程选用)亚马逊云等1.1、使用方式 注册账号 七牛云开发者平台 实名认证 创建空间