State更新是异步还是同步的

news/2024/12/13 16:22:18/

State更新是异步还是同步的

参考文章

https://segmentfault.com/a/1190000015463599

setState使用
this.state = {count: 0,
}incrementCount() {this.setState({count: this.state.count + 1,});
}handleIncrement = () => {this.incrementCount();this.incrementCount();this.incrementCount();
}
incrementCount() {this.setState((prevState) => {return {count: prevState.count + 1}});
}

上边代码连续调用三次并不会达到预期效果

1.setState 不会立刻改变React组件中state的值.
2.setState 通过触发一次组件的更新来引发重绘.
3.多次 setState 函数调用产生的效果会合并。

重绘指的就是引起 React 的更新生命周期函数4个函数:

shouldComponentUpdate(被调用时this.state没有更新;如果返回了false,生命周期被中断,虽然不调用之后的函数了,但是state仍然会被更新)
componentWillUpdate(被调用时this.state没有更新)
render(被调用时this.state得到更新)
componentDidUpdate

如果每一次 setState 调用都走一圈生命周期,光是想一想也会觉得会带来性能的问题,其实这四个函数都是纯函数,性能应该还好,但是render函数返回的结果会拿去做Virtual DOM比较和更新DOM树,这个就比较费时间。

目前React会将setState的效果放在队列中,积攒着一次引发更新过程。

为的就是把 Virtual DOM 和 DOM 树操作降到最小,用于提高性能

结论

在React中,如果是由React引发的事件处理(比如通过onClick引发的事件处理),调用 setState 不会同步更新 this.state,除此之外的setState调用会同步执行this.state


http://www.ppmy.cn/news/917173.html

相关文章

资讯汇总230128

230128 14:00 【白云机场:春节假期接送旅客破百万 国内旅客量达到疫情前水平】广州白云国际机场官微消息,春节假期期间(1月21日至27日),白云机场接送旅客超百万,达到102.2214万人次。其中,国内客流快速回升&#xff0c…

6.18科技新闻(2)

全新触觉显示屏:通过皮肤发送信息 触觉显示屏有没有听过?现在MIT那边正在研发一个可穿戴的数组,一组带有GPS功能的震动电机,可通过一种触觉莫尔斯代码提供简单的导航或者反馈详细的数据。也就是说以后可以不睁开眼睛(通…

智能家居Nest

智能家居最重要的是什么,一方面是要有具有统一标准的平台出现,二是要有充满想象力的智能家电单品出现,三星和LG的确是在做平台,但在我看来他们的平台主要目的还是为了推自己的家电产品,而不在于纯粹的做平台&#xff0…

智能家庭本周锋闻:家居的资本热力图

一、智能家居世界的资本热力图 如果不是极路由在上一周公布新一轮融资时透露了其新的智能家居战略,宅客君几乎要以为它会放弃“作为家庭控制中心”的野心,安心做一个“好Wi-Fi”路由器。当然,即便只作为设备入网的桥头堡,路由器也…

【智能制造】制造业转型升级:上、看见四化,中、转型升级四大象限,下、通用策略与升级路径

制造业转型升级三部曲(上)|看见四化 吴昊阳 知识自动化 本文将仅就生产技术升级问题,试图梳理制造企业的转型升级路线。目前制造技术升级的概念是,本质仍然离不开四个关键词语:自动化、信息化、数字化和智能化。然而&a…

2020中国5G发展及行业应用探索报告(下)| 5G终端战略大转变,新商业模式探索下深挖行业市场潜力...

| 文章版权所有,未经授权请勿转载或使用 核心观点 1、 三大运营商初期5G定价回归理性,探索新商业模式成为必选项;个人业务聚焦超高清视频、快游戏等,同时加速推进5G消息,向OTT厂家展开反攻; 2、5G终端市场前景广阔,运营商转变战略抢占5G创新终端市场:全网通和全场景终…

互联网晚报 | 1月9日 星期日 | 华为再次发债融资40亿元;万达红旗汽车旗舰店开业;我国首条民营控股高铁开通...

今日看点 ✦ 华为发行2022年度第一期中期票据:期限3年,募资总额40亿元 ✦ 万达红旗汽车旗舰店开业,一汽与万达战略合作开始落地 ✦ 龙湖发布新品牌龙湖智创生活,覆盖商管物管两大板块 ✦ 生猪期货上市一年运行平稳:累计…

C++的hpp文件

2023年7月17日,周一上午: 什么是hpp文件? 在C编程中,".hpp" 是一种常见的文件扩展名,表示头文件(Header File)的文件类型。 头文件通常包含类、函数、变量的声明和接口定义&#xf…