探索 React Suspense

2025-06-07

探索 React Suspense

观看截屏视频 [en] /观看演讲 [fr]

在 React v16 中,Facebook 团队发布了一个名为“Fiber”的新版本核心。得益于这次完全重写,我们已经看到了 Fragments、Portals 和 ErrorBoundaries 等新功能。其他一些功能仍在开发中:

  • 悬念
  • 时间分片

在过去的几个月里,Facebook 的工程师们对这些功能的可能性做了一些演示。目前可用的示例很少(截至本文撰写时,这些 API 仍然不稳定且未记录在案)。

在听完Ryan Florence 在 React Rally 上关于 Suspense 的演讲以及@reach/router如何为此做好准备之后,我决定做一个小项目:

  • 深入研究这些新概念
  • 分享代码示例
  • 揭示一个简单的工具,可以帮助解释使用悬念的好处

👉尝试 topheman/react-fiber-experiments👈

Suspense 解决了什么问题?

  • 它允许您在所有数据准备好之前开始渲染(渲染可以在数据开始加载时暂停,并在完成时恢复)
  • 它可以让你避免旋转器的级联,这可能会因意外的回流和重绘而导致闪烁
  • 代码拆分成为内置功能,易于使用(您还可以在加载脚本时暂停渲染)

这意味着:

  • 将数据获取位置移至更靠近渲染位置的位置——数据封装
  • 摆脱加载状态 - 组件中更清晰的状态(在某些用例中甚至可能是无状态的 - 不再需要 componentDidMount 生命周期钩子来获取数据)
  • 对旋转器进行更精细的粒度控制(感谢<Placeholder>

今天如何测试

Suspense 仍在积极开发中,请注意,API 可能会发生变化且不稳定,尽管它已经足够先进,可以用来开发项目。您需要自行构建 React 版本。

托菲

这是对React Suspense 的简短介绍,您可以通过观看视频并使用topheman/react-fiber-experiments在线玩游戏来了解更多信息。

这篇文章最初发表在我的博客上。

文章来源:https://dev.to/topheman/discover-react-suspense-ml
PREV
444天后,托莉中了大奖
NEXT
ToolJet 如何获得 20,000 个 GitHub Stars 和 400 名贡献者