컴포넌트 경계

컴포넌트 분리 기준

반복된 JSX를 잘라내는 것만으로는 부족하고, 어떤 상태를 누가 소유하며 어떤 props로 내려보내고 어떤 이벤트로 올릴지 결정해야 분리 기준이 선명해진다.

01

반복 구조 찾기

카드, 리스트 아이템, 폼 필드처럼 같은 시각 구조가 반복되는지 본다.

shape
02

책임 이름 붙이기

UserCard, PriceInput처럼 컴포넌트 이름이 맡은 역할을 설명해야 한다.

single purpose
03

props 경계 설계

자식이 알아야 하는 값만 props로 넘기고 도메인 전체 객체 노출을 줄인다.

surface
04

상태 끌어올리기

여러 자식이 같은 값을 공유하면 가장 가까운 공통 부모가 상태를 소유한다.

lifting state
too many props
자식이 부모 구현을 너무 많이 앎 props가 계속 늘면 합성, context, 도메인 훅 중 하나를 검토한다.
경계 냄새
state split
같은 상태가 여러 곳에 복제 선택 상태나 입력값이 양쪽에서 따로 변하면 단일 출처로 올린다.
source of truth
rerender cost
부모 변경에 리스트 전체가 흔들림 key, memo, props 안정성을 확인하되 먼저 데이터 흐름을 단순화한다.
premature memo 금지
children slot
레이아웃은 같고 내용만 다름 카드/패널은 children으로 내부를 주입하면 props 폭발을 줄일 수 있다.
composition

컴포넌트 경계 신호

이름만 봐도 역할 컴포넌트 이름이 “어떻게”가 아니라 “무엇”을 드러내는지 말한다.
테스트 단순화 분리 후 props만 바꿔 주요 렌더 상태를 재현할 수 있다.
삭제 가능성 컴포넌트를 지웠을 때 영향 범위가 예측 가능해야 한다.