setState是同步的还是异步的(都有)
异步情况 在React事件当中是异步操作
生命周期和合成事件中
- 无论调用多少次
setState
,都会不会立即执行更新,而是将要更新的·存入_pendingStateQueue
,将要更新的组件存入dirtyComponent
。 - 当上一次更新机制执行完毕,以生命周期为例,所有组件,即最顶层组件
didmount
后会将批处理标志设置为false
。这时将取出dirtyComponent
中的组件以及_pendingStateQueue
中的state
进行更新。这样就可以确保组件不会被重新渲染多次。 setState
本身并不是异步的,而是React
的批处理机制给人一种异步的假象。
同步情况
如果是在setTimeout事件或者自定义的dom事件中,都是同步的
setTimeout(()=>{this.setState({count: this.state.count + 1});console.log(3,this.state.count);//3
})
new Promise<void>(resolve=>{this.setState({count: this.state.count + 1});resolve()console.log(0,this.state.count);//0
}).then(()=>{this.setState({count: this.state.count + 1});console.log(2,this.state.count);//2
})
document.querySelector('#btn').addEventListener('click',()=>{this.setState({count: this.state.count + 1});console.log(this.state.count);
});
setState是同步的还是异步的(都有)相关推荐
- [react] react中的setState是同步还是异步的呢?为什么state并不一定会同步更新?
[react] react中的setState是同步还是异步的呢?为什么state并不一定会同步更新? 由React控制的事件处理程序,以及生命周期函数调用setState不会同步更新state . ...
- SweetAlert swal 是同步的还是异步的
SweetAlert swal 是同步的还是异步的 本人在写关于swal的代码时,发现数据以外的为空, 跟进代码发现,swal代码并没有执行完,程序就执行了下一行js代码, 故猜测swal可能为异步操 ...
- setstate是同步还是异步_【vert.x准备篇1】同步和异步,阻塞和非阻塞概念澄清
为了能更好的理解vert.x的线程模型,我们必须要先明确几个概念:同步(Synchronous)和异步(Asynchronous),阻塞(Blocking)和非阻塞(Non-Blocking).关于这 ...
- setstate是同步还是异步_谈谈 IO模型:同步、异步、阻塞、非阻塞
同步/异步.阻塞/非阻塞 说的是一回事儿吗? 同步/异步.阻塞/非阻塞 你能通俗易懂的讲清楚吗? Java 中的 BIO.NIO.AIO 你了解吗? Socket 编程你还会吗? Linux 操作系统 ...
- 如何让jQuery执行同步而不是异步的Ajax请求?
我有一个提供标准扩展点的JavaScript小部件. 其中之一是beforecreate函数. 它应该返回false以防止创建项目. 我已经使用jQuery在此函数中添加了Ajax调用: before ...
- 企业网盘的映射盘、同步盘、虚拟盘 都是些什么?
企业网盘有很多概念和功能让用户混淆,特别是映射盘.同步盘.虚拟盘.不少用户分不清其中的差异和使用方法,所以也造成无法判断.所以今天就来谈谈这三者的差异,并且也帮助用户做一个鉴别. 先说映射盘,现在很多 ...
- 为什么同步的StringBuffer从来都不是一个好主意
介绍 StringBuffer是用于可变字符串的同步类. 使其同步的主要问题是 它通常用作局部变量,因此使其同步只会使其变慢. 以多线程方式使用它从来不是一个好主意. 这个问题是开发人员认为使用Str ...
- Signal和Slot是同步的还是异步的
signal和slot是异步调用还是同步调用,取决于对connect的设定.其实connect还有一个参数(Qt::ConnectionType),是它决定了是同步还是异步.以下是Connection ...
- 人人都能读懂的react源码解析(大厂高薪必备)
人人都能读懂的react源码解析(大厂高薪必备) 1.开篇(听说你还在艰难的啃react源码) 本教程目标是打造一门严谨(严格遵循react17核心思想).通俗易懂(提供大量流程图解,结合demo ...
最新文章
- 计算机音乐作曲排名2019,2019金曲排行榜_2019《全球华人歌曲排行榜》年度五强名单公布...
- TypeScript中的枚举类型
- 高并发,高性能的一点调研
- vue移动端过渡动画_Vue.js实现微信过渡动画左右切换效果
- 五、队列(Queue)
- loadrunner脚本运行时设置:Run Logic设置运行次数
- coreldraw水涟漪怎么做_曹晓岚:水公园的主题文化营销怎么做?
- Fedora 17 install VMWare tool
- 数学--数论--原根(循环群生成元)
- crc16的c语言函数 计算ccitt_C语言为何如此重要
- spring框架_Spring框架
- 本地Git仓库关联多个远程仓库的两种方法
- 个人 易混淆 高频 高级单词
- 天气实况、天气预报、免费天气接口、空气质量各类天气数据、生活指数、气候数据雷达云图等值面...
- Python 正则表达式匹配中文
- 幂运算的O(lgn)算法
- 用spark统计50年美国最常见的20个名字
- 一天、一个月、一年时间戳分别是多少?
- bp是什么意思贷款利率,利率上bp是什么意思
- 给笔记本电脑外接显示器增加副屏
热门文章
- SpringBoot 2.0 集成 JavaMail ,实现异步发送邮件
- Django contenttypes 应用
- [BJOI2019]送别——非旋转treap
- 【网络编程】——windows socket 编程
- web前端安全编码(模版篇)
- html 新浪博客,html
- new失败跟踪函数_关于针对class自定义new操作符失败的函数处理
- oracle 10g rac 包root.sh报错,案例:Oracle Rac root.sh报错 Failed to create keys in the OLR
- java jdk安装教程win10_win10系统安装java的详细步骤(图文)
- 信息学奥赛一本通 1083:计算星期几 | OpenJudge NOI 小学奥数 7831