React 18 的并发渲染(Concurrent Rendering)是什么?startTransition 如何使用?
并发渲染让 React 可以同时维护多个版本的 UI,根据优先级调度,保证用户输入等紧急更新优先响应。
startTransition 把某个更新标记为「可中断的低优先级更新」:
const [isPending, startTransition] = useTransition()
function handleChange(e) {
setValue(e.target.value) // 紧急:立即更新输入框
startTransition(() => { // 非紧急:可被中断
setSearchResults(compute(e.target.value))
})
}要点:
- transition 更新过程中 React 可暂停、复用、丢弃旧渲染结果
- 与
useDeferredValue互补:一个控制「动作包裹」,一个控制「值延迟」 - 这是 React 从「同步不可中断」到「可中断调度」的范式升级