포스트

[이제와서 시작하는 React 마스터하기 #18] 고급 패턴 소개

[이제와서 시작하는 React 마스터하기 #18] 고급 패턴 소개

React Day 18 - 실무에서 자주 보이는 “고급 패턴”들이 있어요. 지금 당장 배울 필요는 없지만, 이런 게 있다는 것만 알아두세요!

오늘 배울 내용

  • ✅ 고급 패턴이 뭔가요?
  • ✅ 어떤 패턴들이 있나요?
  • ✅ 언제 필요한가요?
  • ✅ 다음 학습 방향

고급 패턴이 뭔가요?

고급 패턴은 React 코드를 더 재사용 가능하고 유지보수하기 쉽게 만드는 설계 방법이에요.

일상 비유 🏗️

레고 블록으로 집을 지을 때:

초급: 블록 하나하나 쌓아요

  • 시간이 오래 걸려요
  • 같은 걸 계속 반복해요

고급: 미리 만든 “벽 세트”, “지붕 세트” 사용

  • 빠르게 조립해요
  • 여러 집에 재사용해요

고급 패턴은 이런 “세트”를 만드는 방법이에요!


주요 고급 패턴들

1. Compound Components (복합 컴포넌트)

뭔가요?

  • 서로 연결된 여러 컴포넌트를 하나의 세트로 만드는 패턴
  • 마치 HTML의 <select><option>처럼

예시를 볼까요?

1
2
3
4
5
6
7
8
9
10
11
12
// 일반적인 방법
<Dropdown
  options={['사과', '바나나', '오렌지']}
  onSelect={handleSelect}
/>

// Compound Components 패턴
<Dropdown onSelect={handleSelect}>
  <Dropdown.Item value="apple">사과</Dropdown.Item>
  <Dropdown.Item value="banana">바나나</Dropdown.Item>
  <Dropdown.Item value="orange">오렌지</Dropdown.Item>
</Dropdown>

장점:

  • 더 유연해요
  • 커스터마이징하기 쉬워요

어디서 봤나요?

  • Radix UI, Headless UI 같은 라이브러리들
  • Material-UI의 일부 컴포넌트들

2. Render Props

뭔가요?

  • 함수를 props로 전달해서 렌더링을 제어하는 패턴

간단한 예시:

1
2
3
4
5
6
<DataFetcher url="/api/users">
  {(data, loading) => {
    if (loading) return <div>로딩중...</div>;
    return <UserList users={data} />;
  }}
</DataFetcher>

요즘은?

  • Custom Hooks로 대체되는 추세예요!
  • 구 버전 라이브러리에서 가끔 볼 수 있어요

3. HOC (High-Order Components)

뭔가요?

  • 컴포넌트를 받아서 새로운 컴포넌트를 만들어내는 함수
  • 기능을 “감싸서” 추가하는 패턴
1
2
3
4
// 로그인 체크 기능 추가
const ProtectedPage = withAuth(MyPage);

// 이제 ProtectedPage는 로그인 체크 기능이 있어요

요즘은?

  • 이것도 Custom Hooks로 대체되는 추세예요!
  • 오래된 코드에서 자주 볼 수 있어요

언제 배워야 하나요?

🟡 아직은 괜찮아요

입문자에게 고급 패턴은 아직 필요 없어요!

이유:

  • React 기초가 더 중요해요
  • Custom Hooks만 잘 써도 충분해요
  • 실무에서도 점진적으로 배워요

🟢 이럴 때 배우세요

  • 라이브러리 코드를 읽다가 모르는 패턴을 발견했어요
  • 자신만의 재사용 가능한 컴포넌트 라이브러리를 만들어요
  • 팀에서 이런 패턴을 사용하고 있어요

실무 베스트 프랙티스

고급 패턴보다 더 중요한 것들이 있어요!

1. 작은 컴포넌트로 나누기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// ❌ 나쁜 예: 너무 큰 컴포넌트
function UserDashboard() {
  // 500줄의 코드...
}

// ✅ 좋은 예: 작은 컴포넌트들
function UserDashboard() {
  return (
    <>
      <UserHeader />
      <UserStats />
      <UserActivity />
      <UserSettings />
    </>
  );
}

2. Props를 명확하게 하기

1
2
3
4
5
// ❌ 불명확
<Button type="1" />

// ✅ 명확
<Button variant="primary" size="large" />

3. 조건부 렌더링 간단하게

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// ❌ 복잡
{user ? (
  user.isAdmin ? (
    <AdminPanel />
  ) : (
    <UserPanel />
  )
) : (
  <Login />
)}

// ✅ 간단
{!user && <Login />}
{user && !user.isAdmin && <UserPanel />}
{user && user.isAdmin && <AdminPanel />}

4. 상태를 가까운 곳에

1
2
3
4
5
6
7
8
9
10
11
// ❌ 최상위에 모든 상태
function App() {
  const [modalOpen, setModalOpen] = useState(false);
  // Modal만 쓰는 상태인데 App에 있음!
}

// ✅ 필요한 곳에만
function ModalContainer() {
  const [modalOpen, setModalOpen] = useState(false);
  // Modal에서만 쓰니까 여기에!
}

정리

고급 패턴이란?

  • 코드를 재사용 가능하게 만드는 설계 방법
  • Compound Components, Render Props, HOC 등
  • 입문자에게는 아직 필요 없어요!

더 중요한 것들

✅ 작은 컴포넌트로 나누기 ✅ 명확한 Props 이름 ✅ 간단한 조건부 렌더링 ✅ 상태를 가까운 곳에 두기


다음 학습 로드맵

고급 패턴을 더 배우고 싶다면?

1단계: 기초 다지기

  • React 기본을 완전히 이해하기
  • Custom Hooks 마스터하기
  • 컴포넌트 설계 연습하기

2단계: 패턴 이해하기

  • Compound Components 패턴 익히기
  • 라이브러리 코드 읽어보기
  • 간단한 재사용 컴포넌트 만들어보기

3단계: 실전 적용

  • 자신만의 컴포넌트 라이브러리 만들기
  • 오픈소스 라이브러리 기여하기

추천 학습 자료

📚 공식 문서:

🎥 온라인 강의:

  • “React Design Patterns” 검색
  • Kent C. Dodds의 Advanced React Patterns

💻 실습:

  • Radix UI, Headless UI 코드 읽어보기
  • 간단한 Dropdown 컴포넌트 직접 만들어보기

다음 포스트 예고

다음 시간에는 실전 프로젝트 아이디어를 소개할게요!

지금까지 배운 내용으로 어떤 프로젝트를 만들 수 있는지, 단계별로 무엇을 만들면 좋은지 알아봐요!

“늦었다고 생각할 때가 가장 빠를 때입니다. 기초를 탄탄히! 🎯”


React 완벽 가이드 시리즈

  1. React란 무엇인가?
  2. 첫 React 앱 만들기
  3. useState - 클릭하면 바뀌는 화면
  4. Props - 컴포넌트끼리 대화하기
  5. useEffect - 컴포넌트 생명주기
  6. 조건부/리스트 렌더링
  7. Context API - Props 지옥에서 탈출하기
  8. Custom Hooks 만들기
  9. React Router 완벽 가이드
  10. 폼 처리와 유효성 검증
  11. React 성능 최적화
  12. 에러 바운더리와 Suspense
  13. 상태 관리 라이브러리
  14. 서버 상태 관리
  15. React와 TypeScript 맛보기
  16. Next.js 맛보기
  17. React 테스팅 입문
  18. 고급 패턴 소개 ← 현재 글
  19. 실전 프로젝트 아이디어
  20. React 배포하기

관련 자료

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.