广告
返回顶部
首页 > 资讯 > 精选 >React中多个setState会调用多少次
  • 871
分享到

React中多个setState会调用多少次

2023-06-25 14:06:58 871人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关React中多个setState会调用多少次,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 两个setState,调用几次?如下代码所示,state中有一个count。对按

这篇文章将为大家详细讲解有关React中多个setState会调用多少次,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1. 两个setState,调用几次?

如下代码所示,state中有一个count。对按钮绑定了点击事件,事件中执行了两次setState,每次都将count的值加1

当点击按钮时,setState会执行几次?render()会执行几次?

答案:都是1次。

state = { count: 0 };handleClick = () => {    this.setState({ count: this.state.count + 1 });    this.setState({ count: this.state.count + 1 });};render() {    console.log(`render`);    return (        <>            <div>当前计数:{this.state.count}</div>            <button onClick={this.handleClick}>add</button>        </>    );}

按照常理来说,第一次点击按钮时,由于执行了两次两次setState,每次都将count的值进行加1render()应该会执行两次,最后count的值应该是2。但是 React 并不是这么执行的。

以上代码放到浏览器运行一下即可:

React中多个setState会调用多少次

最开始时,页面显示count的值为0,控制台打印出render,这是 React 首次渲染时打印的。当点击完按钮后,页面显示count值是1,同时也只打印了1render,说明在这过程中 React 只执行了一次setState,只执行了一次render()渲染操作。

原因在于,React 内部将同一事件响应函数中的多个setState进行合并,减少setState的调用次数,也就能减少渲染的次数,提高性能。

这也就解释了上述代码,为什么最后count的值是1,因为 React 将两个setState进行了合并,最终只执行了1次,render()也只执行了一次。

2. 两个setState,调用的是哪一个?

但上述代码没有验证,React 合并后,到底执行的是哪一次setState。如下代码所示,将第二个setState中,对count的操作改为加2,其余代码保持不变:

state = { count: 0 };handleClick = () => {    this.setState({ count: this.state.count + 1 });    this.setState({ count: this.state.count + 2 }); // 改为+2};render() {    console.log(`render`);    return (        <>            <div>当前计数:{this.state.count}</div>            <button onClick={this.handleClick}>add</button>        </>    );}

再次放到浏览器中执行:

React中多个setState会调用多少次

结果显示,点击按钮后,count的值最终变成了2,也就是进行了+2的操作,render()也只执行了1次。这就说明 React 在合并多个setState时,若出现同名属性,会将后面的同名属性覆盖掉前面的同名属性。可以这么理解,对于同名属性,最终执行的的是最后setState中的属性。

3. 两个setState放在setTimeout中?

若在点击事件函数中,添加一个定时器setTimeout,在定时器中执行两次setState操作,结果又将如何?如下代码,事件处理函数中,写了一个定时器setTimeout,将两次setState放入setTimeout中。

state = { count: 0 };handleClick = () => {    setTimeout(() => {        this.setState({ count: this.state.count + 1 });        this.setState({ count: this.state.count + 2 });    }, 0);};render() {    console.log(`render`);    return (        <>            <div>当前计数:{this.state.count}</div>            <button onClick={this.handleClick}>add</button>        </>    );}

运行结果:

React中多个setState会调用多少次

结果显示,点击按钮后,count的值最终变成了3,也就+1+2的操作都执行了,render()也执行了2次。

这是因为在 React 的合成事件生命周期函数中直接调用setState,会交由 React 的性能优化机制管理,合并多个setState。而在原生事件setTimeout中调用setState,是不受 React 管理的,故并不会合并多个setState,写了几次setState,就会调用几次setState

关于“React中多个setState会调用多少次”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: React中多个setState会调用多少次

本文链接: https://www.lsjlt.com/news/305437.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • React中多个setState会调用多少次
    这篇文章将为大家详细讲解有关React中多个setState会调用多少次,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 两个setState,调用几次?如下代码所示,state中有一个count。对按...
    99+
    2023-06-25
  • 浅谈React多个setState会调用几次
    目录1. 两个setState,调用几次?2. 两个setState,调用的是哪一个?3. 两个setState放在setTimeout中?4. 总结1. 两个setState,调用...
    99+
    2022-11-12
  • React组件中的state和setState()你知道多少
    目录state的基本使用setState()修改状态解决方法:总结state的基本使用 状态(state)即数据,是组件内部的私有数据,只能在组件内部使用 state的值是对象,可以...
    99+
    2022-11-13
  • php中preg_match会匹配多少次
    这篇文章主要介绍php中preg_match会匹配多少次,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php preg_match()函数会匹配1次。preg_match()函数用于根据正则表达式对字符串进行搜索匹配...
    99+
    2023-06-29
  • react中一共有多少个hooks
    这篇文章主要介绍了react中一共有多少个hooks,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 react共...
    99+
    2022-10-19
  • 阿里云服务器一个月试用多少次
    阿里云服务器一个月试用次数没有固定的限制,因为它取决于您选择的配置和您要使用的阿里云产品。根据您选择的配置,每次试用将持续几分钟至几小时不等。 在购买阿里云服务器之前,您需要确保已经对其进行了充分的测试和评估。这可以包括测试阿里云服务器的...
    99+
    2023-10-27
    一个月 阿里 多少次
  • 阿里云服务器一个月试用多少次啊
    在试用阿里云服务器的过程中,您可以评估这些服务的性能和可靠性。以下是一些可能会影响您试用云服务器的因素: 云服务器的处理能力和性能:云服务器通常有多个处理器核心和内存和存储容量,以确保能够处理大量数据和任务。如果您的网站或应用程序需要处...
    99+
    2023-10-27
    一个月 阿里 多少次
  • 阿里云服务器一个月试用多少次合适
    首先,我需要明确试用的目的和场景。试用的目的是为了更好地了解阿里云服务器的性能和功能,以便选择适合自己的云服务器。场景则是为了测试自己的业务是否适合使用阿里云的云服务器。因此,在试用阿里云服务器时,需要考虑自己的业务和需求,选择合适的试用次...
    99+
    2023-10-28
    一个月 阿里 多少次
  • Java中new Object()占用多少个字节
    Java中new Object()占用多少个字节?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。对象的指向先来看一段代码:package com.zwx.jvm;pub...
    99+
    2023-06-06
  • C++实现LeetCode(158.用Read4来读取N个字符之二 - 多次调用)
    [LeetCode] 158. Read N Characters Given Read4 II - Call multiple times 用Read4来读取N个字符之二 - 多次...
    99+
    2022-11-12
  • controller中如何调用多个service方法
    这篇“controller中如何调用多个service方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“controller...
    99+
    2023-06-29
  • vue项目中created()被调用多次的问题怎么解决
    本文小编为大家详细介绍“vue项目中created()被调用多次的问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue项目中created()被调用多次的问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-07-05
  • 腾讯云服务器购买3年会员怎么用啊多少钱一个月
    第一步:注册成为会员 在购买腾讯云的会员之前,您需要注册一个腾讯云账号。我建议您先在腾讯云官网注册一个账号。在注册页面中填写个人信息,然后根据指引完成身份认证等步骤,就可以成为会员了。 第二步:购买云服务器 如果您已经注册了腾讯云账号,那...
    99+
    2023-10-27
    一个月 腾讯 多少钱
  • 怎么在react中使用axios 跨域访问一个或多个域名
    这篇文章将为大家详细讲解有关怎么在react中使用axios 跨域访问一个或多个域名,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.react + axios 跨域访问一个域名配置非常简单...
    99+
    2023-06-08
  • 浅谈controller中调用多个service方法的问题
    目录controller调用多个service方法controller调用service中方法的一些事物问题controller调用多个service方法 一般service方法是有...
    99+
    2022-11-13
  • chatgpt赋能python:Python如何一次性输入多个数?教你使用Python中的多种方法
    Python如何一次性输入多个数?教你使用Python中的多种方法 在python编程中,我们经常需要输入多个数值。为了提高效率,Python提供了多种方法可以一次性输入多个数值。本篇文章将介绍几种常...
    99+
    2023-09-09
    python chatgpt 人工智能 计算机
  • 中国用亚马逊的云服务器有多少个品牌
    亚马逊AWS:亚马逊AWS是全球最大的云计算服务提供商之一,提供云计算、存储、数据库、安全等多种服务,并且在中国市场拥有较高的知名度和市场份额。 微软Azure:微软Azure是微软公司的云计算服务平台,提供各种云计算服务,包括云存储、数...
    99+
    2023-10-27
    亚马逊 中国 有多少个
  • 数据库中如何使用dbms_monitor跟踪多个会话,service_name,sid等
    这篇文章主要为大家展示了“数据库中如何使用dbms_monitor跟踪多个会话,service_name,sid等”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“...
    99+
    2022-10-18
  • phpcms V9如何调用多个模型中的最新内容
    这篇文章将为大家详细讲解有关phpcms V9如何调用多个模型中的最新内容,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。很多时候,希望调用多个模型下的最新内容,但是因为V...
    99+
    2022-10-19
  • vue项目中如何调用多个不同的ip接口
    目录如何调用多个不同的ip接口第一个文件第二个文件第三个文件设置自动配置不同环境接口1.再根目录新建一个文件夹configenv2.在main.js 入口文件中3.在实际Vue页面中...
    99+
    2022-11-13
    vue调用接口 vue调用ip接口 vue调用多个接口
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作