星海

React · 单选题 · 第 41 题

前端与全栈开发面试 · 第 41 题

关于 React 18 的状态更新批处理,下列说法正确的是?

  1. A只有 React 合成事件处理函数里的多次更新才会批处理,其他地方都不会
  2. B每次调用 setState 都会立即同步触发一次重新渲染,不存在任何批处理
  3. CReact 18 已经彻底移除了批处理,改为由并发调度器逐个处理每次更新
  4. DsetTimeout、Promise 回调、原生事件里的多次状态更新,也会被自动批处理

答案

D D. setTimeout、Promise 回调、原生事件里的多次状态更新,也会被自动批处理

解析

React 17 只在合成事件里批处理,在 setTimeout 里连续两次 setState 会渲染两次。React 18 使用 createRoot 后默认自动批处理,无论更新发生在哪里,同一时机的多次更新只渲染一次。确实需要立即同步更新 DOM 时,可以用 flushSync。

在线刷这套题:即时判分、错题本、闪卡复习,不用登录就能练。