Skip to main content
Sonamu가 생성한 컴포넌트와 뷰를 프로젝트 요구사항에 맞게 커스터마이징하는 방법을 알아봅니다.

커스터마이징 개요

생성 후 수정

완전한 제어권 자유로운 수정

Props 확장

새로운 기능 추가 인터페이스 확장

스타일링

디자인 시스템 테마 적용

로직 추가

비즈니스 로직 유효성 검사

커스터마이징 철학

Sonamu의 접근 방식

Sonamu는 “80%는 자동으로, 20%는 커스터마이징” 철학을 따릅니다. 생성 vs 커스터마이징:
커스터마이징이 필요한 경우:
  • 특별한 유효성 검사 규칙
  • 복잡한 관계 처리
  • 고유한 UI/UX 요구사항
  • 권한 기반 기능 제어
  • 워크플로우 통합
커스터마이징 vs 재생성:
  • 생성된 파일은 재생성하면 덮어씀
  • 따라서 생성 후 즉시 Git 커밋 권장
  • 커스터마이징은 생성된 코드를 직접 수정
  • 필요하면 새 컴포넌트를 만들어 사용

View 커스터마이징

목록 페이지 확장

생성된 목록 페이지에 기능을 추가합니다. 원본 (자동 생성):
커스터마이징 (필터 추가):
추가된 기능:
  • 검색 필터
  • 역할 필터
  • 활성 상태 필터

폼 커스터마이징

생성/수정 폼에 비즈니스 로직을 추가합니다. 원본 (자동 생성):
커스터마이징 (복잡한 유효성 검사):
추가된 기능:
  • Zod 스키마 기반 유효성 검사
  • 이메일 중복 확인 (비동기)
  • 비밀번호 복잡도 규칙
  • 비밀번호 확인
  • 비밀번호 강도 표시

useTypeForm으로 더 간편하게 (권장)

@sonamu-kit/react-componentsuseTypeForm을 사용하면 위의 복잡한 코드를 훨씬 간결하게 작성할 수 있습니다.
useTypeForm vs react-hook-form 비교: useTypeForm의 주요 장점:
  1. 자동 타입 추론: UserSaveParams에서 폼 타입이 자동으로 결정됨
  2. 통합 유효성 검사: 백엔드 SaveParams 스키마를 그대로 사용
  3. 간결한 코드: zodResolver, useForm 설정 불필요
  4. Sonamu 최적화: Service와 완벽하게 통합됨
권장 사항: 새로운 폼을 작성할 때는 useTypeForm을 먼저 고려하세요. 대부분의 경우 이것만으로 충분하며, 특별한 요구사항이 있을 때만 react-hook-form을 직접 사용하세요.
고급 기능 예제:

테이블 커스터마이징

테이블에 기능을 추가합니다. 원본 (자동 생성):
커스터마이징 (정렬, 선택, 액션):
추가된 기능:
  • 컬럼 클릭으로 정렬
  • 체크박스로 다중 선택
  • 전체 선택/해제
  • 행별 액션 버튼

컴포넌트 스타일링

Tailwind CSS

CSS Modules

Styled Components

IdAsyncSelect 커스터마이징

커스텀 옵션 렌더링

그룹화된 옵션

SearchInput 커스터마이징

커스텀 제안 렌더링

카테고리별 검색

새 컴포넌트 만들기

생성된 컴포넌트를 기반으로 새로운 컴포넌트를 만듭니다.

복합 컴포넌트

베스트 프랙티스

1. 생성 후 즉시 커밋

2. 공통 로직은 Hook으로

3. 스타일은 전역으로

4. 타입은 확장

주의사항

커스터마이징 시 주의사항: 1. 재생성하면 덮어씀 - Git 커밋 필수 2. 타입 변경은 백엔드에서 먼저 3. 복잡한 로직은 Hook으로 분리 4. Props 인터페이스는 확장 가능하게 5. 스타일은 일관성 유지

다음 단계

View Scaffolding

자동 뷰 생성

ID Async Select

관계 데이터 선택

Search Input

검색 컴포넌트

Service 사용하기

Service 통합