在next.js 13文档中,它说事件处理程序不能在服务器组件中使用,但我想知道为什么。为什么react钩子不可用?
9jyewag01#
在服务器上,没有用户交互。基于用户交互来激发事件。这就是为什么如果一个组件有一个按钮,它应该是一个客户端组件,因为有人必须点击这个按钮。React钩子与浏览器相关。它们基本上是一个系统,它告诉浏览器何时重新计算某些计算或何时基于依赖性重新呈现组件。因此基于用户交互,你的应用状态会发生变化,基于此浏览器必须向用户展示新的界面。
rks48beu2#
它们可以启用,但您必须在页面顶部添加“使用客户端”。然后页面将成为客户端而不是服务器端。
nwnhqdif3#
如果你想使用事件处理程序,你必须添加'使用客户端';因为node.js服务器渲染服务器组件以创建应用的静态版本,它对DOM等浏览器API一无所知。
3条答案
按热度按时间9jyewag01#
在服务器上,没有用户交互。基于用户交互来激发事件。这就是为什么如果一个组件有一个按钮,它应该是一个客户端组件,因为有人必须点击这个按钮。
React钩子与浏览器相关。它们基本上是一个系统,它告诉浏览器何时重新计算某些计算或何时基于依赖性重新呈现组件。因此基于用户交互,你的应用状态会发生变化,基于此浏览器必须向用户展示新的界面。
rks48beu2#
它们可以启用,但您必须在页面顶部添加“使用客户端”。然后页面将成为客户端而不是服务器端。
nwnhqdif3#
如果你想使用事件处理程序,你必须添加'使用客户端';因为node.js服务器渲染服务器组件以创建应用的静态版本,它对DOM等浏览器API一无所知。