【发布时间】:2021-03-02 19:45:36
【问题描述】:
与在 RSC 中一样,由于 HERE 提到的各种原因,React 代码将位于服务器端。
我想知道是否有一种方法可以在挂载点之后利用生命周期和获取 API(例如 update 或 useEffects)。
【问题讨论】:
标签: javascript reactjs typescript
与在 RSC 中一样,由于 HERE 提到的各种原因,React 代码将位于服务器端。
我想知道是否有一种方法可以在挂载点之后利用生命周期和获取 API(例如 update 或 useEffects)。
【问题讨论】:
标签: javascript reactjs typescript
没有。
服务器组件:作为一般规则,服务器组件每次运行一次 在服务器上请求,因此它们没有状态并且无法使用功能 仅存在于客户端上。具体来说,服务器组件:
- ❌ 可能不使用状态,因为它们(在概念上)每个请求只在服务器上执行一次。所以 useState() 和 useReducer() 不是 支持。
- ❌ 可能不使用渲染生命周期(效果)。所以不支持 useEffect() 和 useLayoutEffect()。
- ❌ 不得使用仅限浏览器的 API,例如 DOM(除非您在服务器上对其进行 polyfill)。
- ❌ 不得使用依赖于状态或效果的自定义挂钩,或依赖于仅浏览器 API 的实用程序函数。
- ✅ 可以使用仅限服务器的数据源,例如数据库、内部(微)服务、文件系统等。
- ✅ 可以渲染其他服务器组件、本机元素(div、span 等)或客户端组件。
服务器挂钩/实用程序:开发人员还可以创建自定义挂钩或 为服务器设计的实用程序库。所有的规则 适用于服务器组件。例如,服务器的一个用例 hooks 是为访问服务器端数据源提供帮助。
【讨论】: