我正在使用 react reconciler 编写自定义渲染器。
当树有一些变化时,我的渲染器应该调用 computeLayout
。
我可以在 computeLayout
、appendChild
、removeChild
的尾部插入 commitUpdate
函数调用,这会导致树发生变化。但是当单个状态更新触发了这些函数的多次调用时,效率会非常低下。
我需要的是某种批处理。
但是如果我使用 requestanimationframe
批处理 computeLayout
,那么用户可能会看到错误的布局。
我希望 react reconciler 在应用每个树修改之后和在它终止之前调用我的 computeLayout
,允许浏览器应用所有 DOM 更新。
我们有这样的回调方法吗?在这种情况下,我可以使用 resetAfterCommit
方法吗?