React 18之后提供新的API即flushSync
,它会强制 React 同步刷新提供的回调函数中的任何更新,这确保了 DOM 会被立即 更新。
注意:
flushSync
会对性能产生很大影响。尽量少用。
flushSync
可能会迫使悬而未决的 Suspense 边界显示其 fallback
的状态。
flushSync
也可以运行待定副作用,并在返回之前同步应用它们所包含的任何更新。
当需要刷新内部的更新时,flushSync
也可以在回调外部刷新更新。例如,如果有来自点击的未决更新。React 可能会在刷新回调之前刷新这些更新。
当我们使用flushSync
时候,收到一个警告信息如下:
Warning: flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.
这个信息告诉我们的是:React正在刷新渲染中,依然调用flushSync
会触发这个警告信息,说明这个动作是多余,建议删除这条语句。