-
setState 只在合成事件和钩子函数中是"异步"的,在原生事件和 setTimeout 中都是同步的。
-
合成事件:就是react 在组件中的onClick等都是属于它自定义的合成事件
-
原生事件:比如通过addeventListener添加的,dom中的原生事件
-
-
setState的"异步"并不是说内部由异步代码实现,其实本身执行的过程和代码都是同步的,只是合成事件和钩子函数的调用顺序在更新之前,导致在合成事件和钩子函数中没法立马拿到更新后的值,形式了所谓的"异步",当然可以通过第二个参数 setState(partialState, callback) 中的callback拿到更新后的结果。
-
setState 的批量更新优化也是建立在"异步"(合成事件、钩子函数)之上的,在原生事件和setTimeout 中不会批量更新,在"异步"中如果对同一个值进行多次 setState , setState 的批量更新策略会对其进行覆盖,取最后一次的执行,如果是同时 setState 多个不同的值,在更新时会对其进行合并批量更新
react中的setState是同步还是异步
@小倪同学2023-12-17 23:19
相关推荐
我不吃饼干3 小时前
TypeScript 类型体操练习笔记(二)光影少年3 小时前
浏览器渲染原理?小白探索世界欧耶!~3 小时前
Vue2项目引入sortablejs实现表格行拖曳排序叫我一声阿雷吧4 小时前
JS实现响应式导航栏(移动端汉堡菜单)|适配多端+无缝交互【附完整源码】GISer_Jing5 小时前
前端营销(AIGC II)漠月瑾-西安5 小时前
React-Redux Connect 高阶组件:从“桥梁”到“智能管家”的深度解析NEXT065 小时前
深度解析 JWT:从 RFC 原理到 NestJS 实战与架构权衡程序员林北北6 小时前
【前端进阶之旅】节流与防抖:前端性能优化的“安全带”与“稳定器”寻星探路7 小时前
【前端基础】HTML + CSS + JavaScript 快速入门(三):JS 与 jQuery 实战未来之窗软件服务8 小时前
未来之窗昭和仙君(六十九)前端收银台行为异常检测—东方仙盟练气