当前位置: 首页 > news >正文

服装网站设计策划同城分类网站建设

服装网站设计策划,同城分类网站建设,兰陵成都设计公司,成华区微信网站建设推广setState是同步更新还是异步更新 先说结论setState为什么设计为异步react18之前为什么不确定是同步还是异步呢react18之后setState有哪些改动 先说结论 React18之前:使用了ReactDOM.render,setState在React调度流程中是异步更新,在原生事件和…

setState是同步更新还是异步更新

  • 先说结论
  • setState为什么设计为异步
  • react18之前为什么不确定是同步还是异步呢
  • react18之后setState有哪些改动

先说结论

React18之前:使用了ReactDOM.rendersetStateReact调度流程中是异步更新,在原生事件和setTimeout中是同步更新。
React18:使用ReactDOM.createRoot,默认都是批量更新,也就是异步更新。

React18之前,setState在原生事件和定时器中是同步的,在合成事件和生命周期函数里面是异步的,原理在于合成事件和生命周期函数调用顺序在批处理和更新之前,导致在合成事件和生命周期函数里没法立刻拿到更新后的值,导致形成所谓的异步

setState为什么设计为异步

1. 提升性能
如果每次调用setState都进行一次更新,意味着render函数会被频繁调用,界面重新渲染,最好的方法就是获取到多个更新之后,批量进行更新
2. 保持state和props同步
如果同步更新了state,但是还没有执行render函数,那么stateprops不能保持同步

react18之前为什么不确定是同步还是异步呢

React中,如果是由React引发的事件处理(比如通过onClick引发的事件处理),调用setState不会同步更新this.state;如果是绕过React通过addEventListener直接添加的事件处理函数,还有通过setTimeout/setInterval产生事件处理,调用setState会同步更新this.state

为什么会出现以上有时同步,有时异步的现象呢

  1. ReactsetState函数实现中,会根据一个变量isBatchingUpdates判断是直接更新this.state还是放到队列中回头再说,
  2. isBatchingUpdates默认是false,也就表示setState会同步更新this.state
  3. 但是,有一个函数batchedUpdates,这个函数会把isBatchingUpdates修改为true
  4. 而当React在调用事件处理函数之前就会调用这个batchedUpdates,从而react控制的事件处理过程setState不会同步更新this.state
  5. 即:setState的“异步”并不是说内部由异步代码实现的,其实本身执行的过程和代码都是同步的,只是合成事件和钩子函数的调用顺序在更新之前,导致在合成事件和钩子函数中没法立马拿到更新后的值,形式了所谓的“异步”,
  6. 当然可以通过第二个参数 setState(partialState, callback) 中的callback拿到更新后的结果。

react18之后setState有哪些改动

  • react18之后,setState都会表现为异步(即批处理)。
  • 批处理:是指 React将多个状态更新分组到单个重新渲染中以获得更好的性能
  • 如果同一点击事件中有两个状态更新,React 总是将它们批处理为一次重新渲染。
http://www.yayakq.cn/news/762578/

相关文章:

  • 网站排名优化培训哪家好快速网站
  • 以网站建设为开题报告自己接私单网站开发
  • 网站的广告语应该怎么做vs做网站怎样添加图片
  • 吉安公司做网站网站建设资金投入分析
  • 网站设计的提案做自己的程序设计在线测评网站
  • 高校网站模板龙岩网上办事大厅官网
  • 利津网站建设网站开发需要多久
  • 万网建网站做网站先建立模型
  • 辛集seo网站优化电话做外贸如何分析客户网站
  • 北京模板建站用dw做的网页怎么连到网站上
  • 贵州安顺网站建设软件如何制作
  • 网站更改备案主体同城配送网站建设
  • 服务佳的网站建设龙岩做网站公司哪家好
  • 织梦网站后台密码wordpress上传权限设置
  • c2c网站建设需求分析做任务网站有哪些
  • 宝安品牌网站制作网站常用的优化方法有哪些
  • 太原站扩建asp.net网站开发实战
  • 个人免费网站制作网投计划
  • 网站开发案例php俄罗斯注册公司多少钱
  • 外国网站快速申请qqwordpress 默认密码
  • 如何建立内外网网站详情页设计流程
  • 韶关做网站找公司做网站注意事项
  • 做网站第一步做什么用dede做的网站首页
  • 做seo网站标题重要吗网络营销有哪些模式
  • 搜索引擎友好网站表现江苏seo培训
  • 如何在各个购物网站之间做差价在线咨询24小时免费咨询
  • logo设计网站排行榜河北网络推广服务网
  • 网站排名搜索白云做网站的公
  • 做物流网站找哪家好郑州营销型网站公司电话
  • 西宁网站建设企业网站集群建设价格