用途:这是一份 React 组件组合模式指南,适用于重构含大量布尔属性的组件 API、构建可复用组件库、设计灵活的组件 API、审查组件架构,以及处理复合组件与 context provider。上游来源为 vercel-labs/agent-skills 中的 composition-patterns。
主要能力与原则:优先用组合而非布尔配置来区分复用组件的行为;仅在兄弟组件需要时才提升客户端 UI 状态,服务器数据保留在服务器端;在出现第二个调用点后再抽取共享基础组件,而不是为单一路由 UI 提前抽象。
规则分组:组件架构(高优先级)包括避免布尔属性、用共享 context 构建复合组件;状态管理包括让 provider 成为唯一知晓状态管理方式的地方、定义含 state/actions/meta 的通用接口、把状态提升进 provider 供兄弟访问;实现模式包括用显式变体组件替代布尔模式、优先 children 而非 renderX 属性;React 19 API 部分仅适用于 React 19+,新组件不必使用 forwardRef,use() 可选,useContext() 仍受支持。
约束:仅在共享 UI 包或 2 个以上调用点抽取复合组件;React Server Components 自行获取数据,把服务端渲染的 children 传入客户端叶子组件;URL 可分享状态、异步服务端状态和分组的本地 UI 状态继续交给项目现有库处理,不要用通用 context 依赖注入层替换。
使用方式:可按规则文件阅读,例如 rules/architecture-avoid-boolean-props.md、rules/state-context-interface.md,每个规则文件含原因、错误与正确示例及补充说明。完整汇编指南位于 references/compiled.md,注意不要命名为 AGENTS.md,因为 Cursor 会始终加载该文件名。
不覆盖范围:视觉方向(frontend-design-v1)、Next.js 缓存或 RSC 数据获取(next-v16、vercel-react-v1)。相关交互还包括 shadcn-v3、nuqs-v2、tanstack-query-v5、ahooks-v3。前提假设为 React 19+ 且服务端/客户端边界已存在。