返回专题首页

React 专题

React 18 之后的新能力:并发渲染、Suspense、startTransition 与 SSR

React 18 之后,很多人都会接触到几个高频名词:并发渲染、`Suspense`、`startTransition`、更现代的 SSR。可真正难的地方,从来不是 API 本身,而是这些能力背后反映的是 React 对“更新优先级”“等待边界”和“服务端协作”的重新表达。

React 专题第 16 篇 / 26 篇4 分钟

React 18 之后,很多人都会接触到几个高频名词:并发渲染、SuspensestartTransition、更现代的 SSR。可真正难的地方,从来不是 API 本身,而是这些能力背后反映的是 React 对“更新优先级”“等待边界”和“服务端协作”的重新表达。

这一篇先建立总图,后面的深拆篇再展开。

并发渲染真正带来的是什么?

它并不是“React 自动更快了”的魔法,而是让 React 对更新工作拥有更细的调度能力。也就是说:

  • 某些更新可以更优先;
  • 某些高成本更新可以被打断和恢复;
  • 交互反馈和大内容刷新不必总抢同一优先级。

这意味着 React 18 真正增强的,是交互和渲染调度空间,而不是简单意义上的性能开关。

Suspense 为什么值得认真学?

因为它把等待从零散逻辑变成了边界。以前很多页面会在多个组件里各自处理 loading,现在则更容易围绕某个等待边界统一设计:

  • 等待时显示什么;
  • 哪一块先展示;
  • 哪一块可以稍后再来;
  • 失败时如何降级。

这说明 Suspense 不只是一个 loading 工具,而是在要求你重新思考页面结构。

startTransition 真正想解决什么?

不是所有状态更新都拥有相同优先级。输入、点击反馈这类更新对用户来说非常敏感,而某些列表重算、搜索结果刷新、大区块内容切换则可以稍后一点完成。startTransition 的价值,就是帮你把这类“非紧急更新”明确标出来。

它的意义不在“会不会用”,而在于你是否开始按交互优先级来设计更新。

SSR 为什么会和 React 18 能力放在一起?

因为 React 新一代能力并不只发生在浏览器端。服务端渲染、流式渲染、等待边界和客户端激活这些事情,都会和新的调度模型互相影响。这意味着:

  • SSR 不再只是“服务端先吐 HTML”;
  • 页面结构、数据获取和等待体验可以更细粒度组织;
  • 服务端与客户端的协作需要更稳定边界。

所以 React 18 之后谈 SSR,已经不能再只按旧时代的同步页面思维理解。

为什么这些新能力最怕“为了新而新”?

因为它们确实带来更细的能力,但也意味着更高的理解成本。常见风险包括:

  • 还没识别真正的交互瓶颈,就盲目上 transition;
  • 没有等待边界设计,只是把 loading 换个写法;
  • SSR 收益没想清楚,就提前把交付复杂度抬高;
  • 团队只记 API,不理解它们在解决什么问题。

这会让新能力看起来很先进,实则增加了理解负担。

把 React 18 这些能力放回项目里,最重要的判断是什么?

更稳的顺序通常是:

1. 先确认问题是不是“更新优先级”问题;2. 再看等待体验是否值得用边界重组;3. 服务端场景再判断 SSR 是否真有收益;4. 新能力落地一定要围绕真实交互问题,而不是围绕 API 热度。

最常见的几个误区

1. 把并发能力理解成“默认更快”

它真正改变的是调度,不是免费性能。

2. 把 Suspense 当普通 loading 包装器

会错过它真正的结构化价值。

3. transition 到处乱用

会增加理解成本,却未必带来体验提升。

4. SSR 收益没想清楚就盲目上

复杂度很可能大于收益。

总结

React 18 之后的新能力真正重要的,不是 API 增多了,而是 React 开始更明确地表达“更新优先级、等待边界和服务端协作”这些以前经常被写散的东西。并发渲染、Suspense、startTransition 和现代 SSR 都在服务这条主线。只要你始终围绕真实问题来使用这些能力,它们才会真正变成体验收益。