ワンクリックで
create-component-react
创建可复用的 React 组件实践指南,涵盖 props 与类型约定、无状态原则、类名合并(clsx)、原生属性透传及导出规范,附示例实现。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
创建可复用的 React 组件实践指南,涵盖 props 与类型约定、无状态原则、类名合并(clsx)、原生属性透传及导出规范,附示例实现。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
在 monorepo 中为新组件编写样式的步骤、约定与示例,说明如何使用 @vanilla-extract 和统一 token 管理、实现变体类与低优先级选择器的最佳实践。
本技能用于在网站文档中为组件创建示例页,说明示例页应包含的要素与组织规范:组件定位、可复制运行的基础示例、常见变体、交互与边界条件、可访问性要点以及测试与视觉回归快照路径。示例采用 MDX/TSX 格式并保证代码可直接复制运行。
验证与更新:定义组件或功能的验证流程与更新指南,包括测试策略、回归检测、变更日志维护、验证准则和更新发布步骤,确保修改可追溯、可回滚且满足可访问性与兼容性要求。
| name | create-component-react |
| description | 创建可复用的 React 组件实践指南,涵盖 props 与类型约定、无状态原则、类名合并(clsx)、原生属性透传及导出规范,附示例实现。 |
新组件实践指南(中文)——创建组件
本次示例涉及的文件
packages/camphora-react/src/components/<Component>/index.tsx —— 简洁的 React 包装组件,组合类并透传原生属性。packages/camphora-react/src/components/index.ts —— 将组件导出,供项目其他地方直接引用。可复用步骤(组件部分)
2. 编写 React 组件
- 在 packages/camphora-react/src/components/<Component>/index.tsx 中创建组件。
- 组件约定:
- 默认导出 <Component> 函数组件。
- 接受 PropsWithChildren<React.DivHTMLAttributes<HTMLDivElement>>,以便透传 onClick、disabled、aria-* 等原生属性。
- 组件的 props 应在组件内展开(spread)并透传到原生元素,确保 aria-*、onClick、disabled 等原生属性被保留(例如使用 {...rest})。
- 组件的 props 类型应通过接口定义,并使用 I 前缀命名,例如 interface I<Component>Props extends React.DivHTMLAttributes<HTMLDivElement> {};组件应使用该接口进行类型注解。
- 使用 clsx 将外部 className 与基础 <component> 类合并;不引入变体类型的 props(例如 variant="primary")——所有视觉变体通过类名控制。
- 示例实现:
```tsx
import React from "react";
import { <component> } from "@idealjs/camphora-styled";
import clsx from "clsx";
interface I<Component>Props extends React.DivHTMLAttributes<HTMLDivElement> {}
const <Component>: React.FC<I<Component>Props> = ({ children, className, ...rest }) => (
<div className={clsx(<component>, className)} {...rest}>
{children}
</div>
);
export default <Component>;
```
3. 导出组件
- 在 packages/camphora-react/src/components/index.ts 中添加导出项,使其他包可直接通过 @idealjs/camphora-react 引入。
注意与约定
clsx 合并类名。组件状态约定
visible / 打开-关闭),应由外部通过 props 传入并由外部控制(例如传入 visible 和 onClose),组件内部不应持有 UI 可变状态。useState、useReducer、useRef(用于保存可变 UI 状态)、useEffect(用于在组件内维持状态相关副作用)等来保存或控制显示/打开-关闭等 UI 行为。若需要状态,请采用受控模式(由父组件通过 props + 回调,如 value/onChange、visible/onClose)来管理。