反应服务器组件

Your go-to forum for bot dataset expertise.
Post Reply
suchona.kani.z
Posts: 382
Joined: Sat Dec 21, 2024 5:28 am

反应服务器组件

Post by suchona.kani.z »

2023 年 5 月,Next.js 发布了 13.4 版本,该版本支持新的应用程序路由器作为首选的基于文件的路由系统。此版本引入了实验性的“使用客户端”语法来支持React Server 组件。由于这些功能目前被 React 归类为实验性功能,React 生态系统中的一些库(在撰写本文时)尚未为它们提供完全支持。 React Test Library 就是一个例子,它目前无法显示异步服务器组件。

应用程序路由器
虽然由于基于文件的路由系统中的名称更改,应用程序路由器与页面路由器有根本的不同,但我们要查看的主要区别在于服务器组件。

服务器与客户端组件
在 App-Router 中,默认情况下每个 React 组件都被视为服务器组件,除非通过“使用客户端”显式地将其标记为客户端组件。有些组件(例如页面路由)必须是服务器组件,而其他组件可以是服务器组件,也可以是客户端组件。

在详细介绍之前,了解服务器和客户端组件之间的边界非常重要。值得 保加利亚 whatsapp 数据 记住的是,React 在默认使用时会使用 CSR 在客户端上呈现 HTML。像 Next.js 这样的 SSR 框架在服务器上执行相同的渲染步骤。此 SSR 功能适用于服务器和客户端组件。不同之处在于,客户端组件(部分)在客户端进行水合,而服务器组件根本不向客户端发送 JS。下表显示了服务器和客户端组件之间的一些主要区别:


图书馆支持
React 生态系统中现有的成熟库通常在设计时考虑了客户端组件,因此不提供对服务器组件的基本支持。

客户端功能
尝试在服务器组件中使用具有纯客户端逻辑的库(默认情况下,App Router 中的所有自定义组件都被视为服务器组件)会导致 Next.js 服务器上出现难以调试的错误。以下是 React-hook-form 快速入门指南中的示例:

我们的表单组件如下所示:

尝试渲染此组件会导致以下运行时错误:
向该组件文件添加“use client”语句使其成为客户端组件并解决问题。我们可以通过为它创建一个包装器来假装react-hook-form支持服务器组件架构
Post Reply