React 에는 본인이 extend 할 클래스 계층이 없어. 컴포넌트 안에 컴포넌트를 nesting 하고 UI 조각을 prop 이나 children 으로 넘겨서 복잡한 UI 를 지어. 그게 composition. 어떤 클래스 트리보다 멀리 확장돼.
두 가지 composition idiom
React composition 의 거의 모두가 두 패턴으로 환원돼:
childrenprop — 부모가 frame 렌더 + 자식이 안쪽 채움.- Slot prop — React node 받는 이름 붙은 prop (children 외) — 부모가 특정 자리에 composition.
Slot-prop 레이아웃 (header / body / footer) 가 대시보드, 다이얼로그, 카드에서 보임. children prop 만으로 단순 케이스 커버; slot prop 은 자리가 여러 개 있을 때 이김.
Compound component 패턴
가끔 호출자가 <Tabs><Tab>A</Tab><Tab>B</Tab></Tabs> 처럼 쓰게 하고 싶음. Tabs 부모가 active 상태 소유하고 Tab 자식이 context 로 읽음. 이게 compound component — 부모와 자식이 암묵적 state 계약 공유. 아끼며 써; 라이브러리에 좋음, 앱 코드엔 over-engineered 가능.
asChild / Slot 패턴
Radix UI 가 대중화한 패턴: 스타일 잡힌 <button> 을 <Link> 로 cloning 하는 대신, 호출자가 asChild 넘기면 컴포넌트가 자식을 실제 element 로 렌더하고 본인 동작 merge. 같은 Button 이 <Link> 감싸면 진짜 앵커가 됨.
HOC 손이 가면 멈춰. Composition 이 거의 항상 더 깨끗. 2026년에 HOC 가 이기는 경우는 사라질 만큼 드물어 — 보통 라이브러리의 data-fetching 래퍼 (이젠 그들도 hook 씀). 이 트랙의 lesson 6 가 사망 통보.