hook-abstract-pattern
이 문서는 react의 커스텀 훅을 만들 때 지켜야하는 패턴을 정의합니다. 커스텀 훅을 새롭게 만들어야 하거나, 기존의 훅을 리팩토링해야할 때, 그리고 코드리뷰를 진행할 때 이 스킬을 사용하세요.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
이 문서는 react의 커스텀 훅을 만들 때 지켜야하는 패턴을 정의합니다. 커스텀 훅을 새롭게 만들어야 하거나, 기존의 훅을 리팩토링해야할 때, 그리고 코드리뷰를 진행할 때 이 스킬을 사용하세요.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
해당 프로젝트의 도메인 지식에 대한 정리 파일입니다. 이 서비스의 도메인에 대한 개념이 필요한 경우 이 스킬을 사용하세요.
이 문서는 react의 컴포넌트를 만들 때 지켜야하는 폴더/index.tsx 방식의 colocation 패턴을 정의합니다. 컴포넌트를 새롭게 만들어야 하거나, 기존의 컴포넌트를 리팩토링해야할 때, 그리고 코드리뷰를 진행할 때 이 스킬을 사용하세요.
이 문서는 react의 컴포넌트를 만들 때 지켜야하는 추상화 레벨을 정의합니다. 컴포넌트를 새롭게 만들어야 하거나, 기존의 컴포넌트를 리팩토링해야할 때, 그리고 코드리뷰를 진행할 때 이 스킬을 사용하세요.
基于 SOC 职业分类
| name | hook-abstract-pattern |
| description | 이 문서는 react의 커스텀 훅을 만들 때 지켜야하는 패턴을 정의합니다. 커스텀 훅을 새롭게 만들어야 하거나, 기존의 훅을 리팩토링해야할 때, 그리고 코드리뷰를 진행할 때 이 스킬을 사용하세요. |
이 스킬은 모든 커스텀 훅들 해당 프로젝트에서 지켜져야하는 커스텀 훅 추상화 패턴을 정의합니다.
모든 커스텀 훅은 아래의 추상화 패턴을 지켜야만 합니다. 핵심적으로 모든 컴포넌트는 도메인 로직을 다루는 여부에 따라서 feature, common으로 나눕니다.
feature 훅은 특정 도메인 로직을 다루는 훅입니다. 예를 들어, 회원가입 폼에서 사용하는 useMemberForm 훅이 여기에 해당합니다.
common 훅은 도메인 로직과 상관없이 재사용 가능한 훅입니다. 예를 들어, 폼 상태 관리를 위한 useForm 훅이 여기에 해당합니다.
각 커스텀 훅은 자신의 폴더를 가지며, 해당 폴더 내에 index.tsx 파일을 통해 익스포트됩니다.
커스텀 훅에서 사용되는 유틸 파일, 서브 컴포넌트 파일, 커스텀 훅 등은 모두 해당 커스텀 훅 폴더 내에 위치해야 합니다.
index.tsx 파일에서 커스텀 훅의 메인 구현을 익스포트하며, 다른 파일들은 커스텀 훅 내부에서만 사용됩니다.
src/
├── hooks/
│ ├── common/
│ │ ├── useForm
| | | ├── index.tsx # useForm 커스텀 훅 구현
│ │ ├── useSMS
| | | ├── index.tsx # useSMS 커스텀 훅 구현
│ │ ├── useHapticFeedback
| | | ├── index.tsx # useHapticFeedback 커스텀 훅 구현
│ └── feature/
│ ├── useMemberForm
| | ├── index.tsx # useMemberForm 커스텀 훅 구현
│ ├── useProgramNoticeSMS
| | ├── index.tsx # useProgramNoticeSMS 커스텀 훅 구현
| ├── useProgramNoticeHapticFeedback
| ├── index.tsx # useProgramNoticeHapticFeedback 커스텀 훅 구현
feature 훅은 common 훅을 사용할 수 있지만, common 훅은 feature 훅을 사용할 수 없습니다. 이는 도메인 로직이 포함된 훅이 도메인 로직과 상관없는 훅에 의존하는 것은 가능하지만, 그 반대는 성립하지 않기 때문입니다.
각 훅은 하나의 일만 하도록 구현되어야 합니다. 하나의 커스텀 훅이 여러 도메인 로직을 다루거나, 도메인 로직과 관련 없는 기능을 함께 다루는 것은 지양해야 합니다.
이때 common 훅에서 도메인만 포함된 훅이 feature 훅이 됩니다.
커스텀 훅의 목적과 기능 정의
추상화 레벨에 맞추어 구현 계획 세우기
도메인 로직이 포함된 훅이라면 feature 훅으로 구현합니다. 이후 해당 커스텀 훅에서 도메인을 제외하고 추상화가 가능한 부분을 common훅으로 구현합니다.
common훅으로 구현한 훅을 사용하여 feature 훅을 리팩토링 합니다.
기억하세요: 해당 문서에 나와있는 추상화 규칙을 제외하고는 절대로 불필요한 추상화는 해서는 절대로 안됩니다.