'use client' 声明模块边界:该模块及其 import 的子树进入客户端 bundle,父级服务端组件可以把它作为引用嵌入。跨边界传递的 props 必须可序列化:支持基本类型、数组、普通对象、Date、Map/Set、Promise 以及 Server Action 函数引用;不支持普通函数、class 实例、Symbol 等运行时对象。

心智模型是「服务端组件的输出是数据而不是 HTML」。常见错误:从服务端组件向客户端组件传 onClick 回调会直接报错,解法是传 Server Action 引用或把交互下移到客户端组件内部。children 是特例:服务端组件可作为 children 传入客户端组件(组合模式),避免整棵子树被迫客户端化,这也是保持服务端渲染收益的关键手法。追问:RSC payload 格式、Server Action 的闭包引用如何加密与定位。

// 服务端组件
<ClientWrapper action={saveAction}>
  <ServerRenderedList />
</ClientWrapper>