标签:原生 react 异步 更新 React state setState
1.setState
setState 是异步更新的
简单总结下原因:
- setState设计为异步可以显著提升性能:
– 如果每次调用setState都进行一次更新,那么意味着render会被频繁调用,界面重新渲染,这样效率较低
–所以比较好的办法就是 获取多个更新,进行批量更新 - 如果同步更新state 但是还没执行render函数,那么state和props不能保持同步
– state和props不能保持一直性 会在开发中产生很多问题.
2.那些情况下setState变成同步更新
- 情况一 :把setState放在 定时器中
- 情况二 : 吧setState 放在 原生DOM监听中
总结下:
在组件生命周期或者React合成事件中,是异步
在setTimeout或者原生dom事件中,是同步
详情见源码吧 反正我说不清
补充:react的合成事件合成对象
为什么react搞一手合成对象,为什么不直接用原生的,
以为react这个框架他不仅仅要跑在浏览器上,如果用的是react-native 就是跑在原生的手机端的
jsx代码跑在浏览器上就是 浏览器产生的dom对象
手机端就是原生控件对象,所以需要什么对象是不明确的
标签:原生,react,异步,更新,React,state,setState 来源: https://blog.csdn.net/qq_34741636/article/details/116803524
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。