关于 composition-patterns
composition-patterns 是一组面向 React 组件架构的规则,指导开发者用组合、复合组件和显式变体构建可复用 API。内容还涵盖状态放置及 React 19 的 ref 和 use() 规则,并明确区分服务端与客户端数据。
主要功能
- 01以组合替代布尔属性堆叠
- 02为复杂组件使用复合组件结构
- 03仅在兄弟组件需要时提升客户端状态
- 04使用显式变体和 children 进行组合
- 05提供 React 19 ref 与 use() 指引
适用场景
- 01重构含有大量布尔属性的组件
- 02设计可复用组件库 API
- 03评审组件架构和状态管理
- 04实现复合组件或上下文提供者
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ blockmatic/ basilic-skills --skill composition-patterns安装后在 Claude Code 中输入/composition-patterns确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
metadata.jsonREADME.mdreferences/compiled.mdrules/_sections.md_template.mdarchitecture-avoid-boolean-props.mdarchitecture-compound-components.mdpatterns-children-over-render-props.mdpatterns-explicit-variants.mdreact19-no-forwardref.mdstate-context-interface.mdstate-decouple-implementation.mdstate-lift-state.md详细介绍
React 组合模式
用于构建灵活、易维护的 React 组件的组合模式。通过使用复合组件、提升状态和组合内部实现,避免布尔属性泛滥。上游来源: vercel-labs/agent-skills 中的 composition-patterns。
范围
- 适用于:可复用组件 API、复合组件、显式变体、React 19 ref/
use()变更 - 不适用于:视觉设计方向(frontend-design);Next.js 缓存或 RSC 数据获取(next-v16、vercel-react)
假设
- 典型的 Basilic 应用使用 React 19+;在 React 18 上跳过 React 19 规则部分
- 服务端/客户端边界已存在;组合不得将服务端数据移入仅限客户端的提供程序
原则
- 对于复用组件,优先采用组合,而非布尔配置
- 仅当同级组件需要客户端 UI 状态时才提升状态;服务端数据留在服务端
- 在第二个调用点出现后再提取共享基元,不要为一次性的路由 UI 提取
约束
必须
- 仅当用于共享 UI 包或至少 2 个调用点时才提取复合组件;不要为单个路由叶节点提取
- 让 React Server Components 自行获取数据;将服务端渲染的子项传递给客户端叶组件,而不是将这些数据提升到客户端提供程序中
- 将可通过 URL 分享的状态、异步服务端状态和分组本地 UI 状态留给项目已有的库管理(查询字符串解析器、TanStack Query、分组状态钩子)——不要用通用上下文依赖注入层替代它们
应该
- 除非父组件必须附加 ref,否则不要使用
forwardRef - 对复用 API 使用显式变体组件,而不是
isX布尔模式 - 优先使用
children,而不是renderX属性
避免
- 为一次性页面过早抽象
- 仅用于重新导出 RSC 获取的 props 的客户端提供程序
- 为了“组合”所有内容而更改现有的
'use client'位置
交互
- App Router / RSC:next-v16
- React 性能:vercel-react
- shadcn 基元:shadcn-v3
- URL 状态:nuqs-v2
- 客户端异步:tanstack-query-v5
- 分组本地状态:ahooks-v3
适用场景
- 重构包含许多布尔属性的组件
- 构建可复用组件库
- 设计灵活的组件 API
- 审查组件架构
- 使用复合组件或上下文提供程序
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 组件架构 | 高 | architecture- |
| 2 | 状态管理 | 中 | state- |
| 3 | 实现模式 | 中 | patterns- |
| 4 | React 19 API | 中 | react19- |
快速参考
1. 组件架构(高)
architecture-avoid-boolean-props— 不要添加布尔属性来定制行为;使用组合architecture-compound-components— 使用共享上下文组织复杂组件
2. 状态管理(中)
state-decouple-implementation— 提供程序是唯一了解状态管理方式的地方state-context-interface— 定义包含状态、操作和元信息的通用接口,以用于依赖注入state-lift-state— 将状态移入提供程序组件,以便同级组件访问
仅在上述约束允许的情况下应用这些规则。不要提升由服务端管理的数据。
3. 实现模式(中)
patterns-explicit-variants— 创建显式变体组件,而不是使用布尔模式patterns-children-over-render-props— 使用 children 进行组合,而不是使用 renderX 属性
4. React 19 API(中等)
仅适用于 React 19 及更高版本。React 18 或更早版本请跳过本节。
react19-no-forwardref— 新建组件时不要使用forwardRef。条件读取上下文时可以选择使用use();useContext()仍受支持。
使用方法
阅读各规则文件,了解详细说明和代码示例:
rules/architecture-avoid-boolean-props.md
rules/state-context-interface.md
每个规则文件都包含其重要性说明、错误和正确示例,以及补充背景信息。
完整的编译版指南(请勿将其命名为 AGENTS.md;Cursor 始终会加载该文件名):references/compiled.md
评论
支持 Markdown