该技能用于指导 React/Next.js 项目中 “use client” 指令的正确用法,核心是把该指令理解为服务端组件与客户端组件之间的「边界」,而非给单个组件贴标签。一旦进入客户端边界,所有被导入的组件都自动成为客户端组件,子组件无需重复添加指令。
主要能力:说明何时使用 “use client”,包括组件由服务端组件导入(直接或作为页面入口),且需要客户端能力时,例如 React 钩子(useState、useEffect、useContext 等)、事件处理器(onClick、onChange、onSubmit 等)、浏览器 API(window、document、localStorage 等),以及依赖上述能力的第三方库。同时说明何时不使用:已处于客户端边界内、纯展示组件、仅因「保险起见」、以及所有使用 props 的组件。
使用方式:给出错误与正确写法对比,强调只应让唯一入口组件添加 “use client”,子组件保持无指令;提供决策流程图,按「是否由服务端组件导入」「是否需要客户端能力」判断;并给出页面与交互区块的真实示例,以及共享展示组件在两种上下文中的复用方式。
常见问题:包括 “useState only works in Client Components”、“Event handlers cannot be passed to Client Components from Server Components”、“async/await is not yet supported in Client Components” 三类报错的原因与处理方向。
限制:资料以概念与示例为主,未提供安装命令、代码仓库地址或具体版本要求;实际项目依赖的 React/Next.js 版本与配置暂未提供。