React 的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对象
手机端就是原生控件对象,所以需要什么对象是不明确的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值