十个开发者里至少八个会说 use client 让组件在浏览器里跑,作者指出这完全反了:Client Component 同样在服务端执行,否则不会因为 window is not defined 把服务端打崩。use client 定义的是模块边界——这个文件导出的东西要打进浏览器包,并允许子树使用 hooks 和事件。文章用图解讲清 RSC Payload 和 hydration 怎么把两端接起来。
🔑 核心要点
App Router 下每个文件默认都是 Server Component,use client 只是打标记。
如果 Client Component 只在浏览器跑,服务端就不会抛 window is not defined。