원클릭으로
create-component-react
创建可复用的 React 组件实践指南,涵盖 props 与类型约定、无状态原则、类名合并(clsx)、原生属性透传及导出规范,附示例实现。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
创建可复用的 React 组件实践指南,涵盖 props 与类型约定、无状态原则、类名合并(clsx)、原生属性透传及导出规范,附示例实现。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
在 monorepo 中为新组件编写样式的步骤、约定与示例,说明如何使用 @vanilla-extract 和统一 token 管理、实现变体类与低优先级选择器的最佳实践。
本技能用于在网站文档中为组件创建示例页,说明示例页应包含的要素与组织规范:组件定位、可复制运行的基础示例、常见变体、交互与边界条件、可访问性要点以及测试与视觉回归快照路径。示例采用 MDX/TSX 格式并保证代码可直接复制运行。
验证与更新:定义组件或功能的验证流程与更新指南,包括测试策略、回归检测、变更日志维护、验证准则和更新发布步骤,确保修改可追溯、可回滚且满足可访问性与兼容性要求。
SOC 직업 분류 기준
| 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)来管理。