面试官问,如何回答他
setState 设计成异步的话,可以调度什么时候触发视图更新。react 内部就是设有这样的调度机制,大部分情况下,一堆 setState 都能在几毫秒内完成,那么就等待所有 setState 都完成,再集中更新一次视图就好了。
极端情况下,可能真的 setState 调用太多个了,导致要上百毫秒才能全部完成,那可以这样设定:比如超过 x 毫秒,setState 还没执行完毕的话,那我们暂停一下啊,先更新一轮视图,让用户不要有卡顿的感觉,然后回过头继续执行剩下的 setState 操作,这样可以保证应用的视图响应足够及时,提升用户体验。
1 回答1.7k 阅读✓ 已解决
4 回答1.7k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
4 回答1.4k 阅读
1 回答1.6k 阅读✓ 已解决
设计如此。
至于为啥设计成异步的,那是出于 React 团队的考虑,但也不是完全没有反对声音。
React 团队怎么考虑的可以看这篇:https://zhuanlan.zhihu.com/p/...