Appearance
React 理念
CPU 瓶颈
原因:
JS 可以操作 DOM,GUI渲染线程
和JS线程
是互斥的,所以 JS 脚本执行和浏览器布局、绘制不能同时执行。 当 JS 执行时间太长,就会导致页面卡顿
如何解决:
在浏览器每一帧的时间中,预留一些时间给 JS 线程, 利用这些时间更新组件。当一帧中的任务无法完成,就会中断更新,放在下一帧执行。
所以,解决该问题的关键是,实现时间切片
, 将同步的更新
变为可中断的异步更新
。
IO 瓶颈
React
将人机交互研究的结果整合到真实的 UI 中。
例如当我们访问 github 某个页面,页面并没有直接跳转,而是留在当前页面,等待数据加载完成。
为此,React 实现了Suspense (opens new window)
功能及配套的 hook——useDeferredValue
(opens new window)。
而在源码内部,为了支持这些特性,同样需要将同步的更新变为可中断的异步更新