目录
模式和最佳实践
在React和Next.js中获取数据有一些推荐的模式和最佳实践。本页面将介绍一些最常见的模式以及如何使用它们。
在服务器上获取数据
在可能的情况下,我们建议使用Server Components在服务器上获取数据。这使您能够:
- 直接访问后端数据资源(例如数据库)。
- 通过阻止敏感信息(例如访问令牌和API密钥)暴露给客户端,从而使应用程序更加安全。
- 在相同的环境中获取数据并进行渲染。这减少了客户端和服务器之间的往返通信,以及客户端上主线程的工作。
- 使用单个往返而不是在客户端上发起多个单独的请求来执行多个数据获取。
- 减少客户端服务器瀑布效应。
- 根据您的区域,数据获取还可以更接近您的数据源,减少延迟并提高性能。
然后,您可以使用Server Actions 对数据进行突变或更新。
在需要时获取数据
如果需要在树中的多个组件中使用相同的数据(例如当前用户),则无需全局获取数据,也无需在组件之间传递props。
相反,您可以在需要数据的组件中使用fetch
或Reactcache
,而无需担心为相同数据发出多个请求的性能影响。
这是可能的,因为fetch
请求会自动进行记忆。
了解有关请求记忆的更多信息
note
这也适用于布局,因为不可能在父布局和其子布局之间传递数据。
流式处理
流式处理和Suspense是React的特性, 它们允许您逐渐呈现和逐步将UI的渲染单元流式传输到客户端。
通过Server Components和嵌套布局, 您可以立即呈现不需要特定数据的页面部分, 并为获取数据的页面部分显示加载状态。 这意味着用户无需等待整个页面加载完毕,就可以开始与之交互。
要了解有关流式处理和Suspense的更多信息,请参阅 Loading UI和 Streaming and Suspense页面。