
react-setState更新机制--源码解析
在非事件回调和 setTimeout 中
发布日期:2021-05-20 10:06:59
浏览次数:51
分类:精选文章
本文共 574 字,大约阅读时间需要 1 分钟。
React 中 setState
的更新机制比较复杂,主要涉及两种不同的刷新机制,取决于调用 setState
的地方是否是异步函数或者事件回调。
当使用 setTimeout
或类似的异步方法调用 setState
时,所有的 setState
调用都会被 React 合并成一个单独的操作,放到一个队列中进行。这样能保证同一个组件的 state
只被更新一次,避免了多次渲染带来的性能问题。同时,以 isBatchingUpdates
为 true 的状态,新调用会被加入到 _dirtyComponents
数组中,等待处理。
- 在事件回调中
- 在非事件回调和 setTimeout 中,
setState
更新是异步且批量化的,保持较好的性能。 - 在事件回调中,默认是同步执行的,导致频繁的渲染,不建议大量使用
setState
。
当 setState
是在事件回调、自定义函数或者延迟调用 (timer
等) 中被调用时,isBatchingUpdates
会被置为 false。此时,React 会立即更新 state
,并使组件重新渲染,可能导致频繁的状态更新,增加性能负担。
总结:
这两种机制确保了 React 应用的流畅性和准确性,正确使用 setState
是优化 React 组件性能的关键。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月25日 02时15分14秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
flink sql设置并行度_Flink 参数配置和常见参数调优
2023-01-24
go 字符串替换_Go 每日一库之 quicktemplate
2023-01-24
hive 建表_sqoop的使用之导入到hive和mysql
2023-01-24
hp工作站z8装Linux,惠普Z8G4双路最小工作站
2023-01-24
html上传图片直接保存到数据库中,Editor上传图片路径存入数据库中怎么弄?
2023-01-24
html游戏玩不了,WinXP网页游戏玩不了怎么办有哪些解决方法
2023-01-24
html转jsp_JSP详解
2023-01-24
iphone打字怎么换行_手持iPhone?你可能并不知道的小技巧!
2023-01-24
jaccard相似度_自然语言处理之文本相似度计算
2023-01-24
java 8 list对象属性判空_java ---- 认识类对象,属性和方法
2023-01-24
java http delete_java积累---HttpDelete请求方式传递参数
2023-01-24
java swing数据库,如何在Java swing中查看数据库结果集
2023-01-24
java xmpp 群聊,使用XMPPFramework openfire创建聊天室
2023-01-24
java 反义_java中一些常用的英语
2023-01-24
java 命令行 class_如何从命令行执行java .class
2023-01-24
java 字符编码过滤器_java web中字符编码的过滤器(Filter - 1)
2023-01-24