react的setState为什么是异步

面试官问,如何回答他

阅读 1.6k
2 个回答

设计如此。

至于为啥设计成异步的,那是出于 React 团队的考虑,但也不是完全没有反对声音。

React 团队怎么考虑的可以看这篇:https://zhuanlan.zhihu.com/p/...

setState 设计成异步的话,可以调度什么时候触发视图更新。react 内部就是设有这样的调度机制,大部分情况下,一堆 setState 都能在几毫秒内完成,那么就等待所有 setState 都完成,再集中更新一次视图就好了。

极端情况下,可能真的 setState 调用太多个了,导致要上百毫秒才能全部完成,那可以这样设定:比如超过 x 毫秒,setState 还没执行完毕的话,那我们暂停一下啊,先更新一轮视图,让用户不要有卡顿的感觉,然后回过头继续执行剩下的 setState 操作,这样可以保证应用的视图响应足够及时,提升用户体验。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题