#37ReactHard

List 렌더 최적화 (memo + useCallback)

List 렌더링 최적화

<List items onPick onUnrelated /> 컴포넌트가 있습니다. 부모의 unrelated 상태가 바뀔 때마다 모든 Item이 재렌더되는 문제를 해결하세요.

요구사항

  • ItemReact.memo로 감싸야 합니다.
  • onPick 콜백은 useCallback으로 안정화되어야 합니다 (또는 의존성이 변하지 않는 함수).
  • items 자체가 변하지 않고 onPick 참조가 같으면 unrelated 상태가 바뀌어도 Item은 재렌더되지 않아야 합니다.
  • ItemrenderSpy(id)를 호출하여 테스트가 렌더 횟수를 셀 수 있게 합니다.

시그니처

type Item = { id: string; label: string };
function List(props: {
  items: Item[];
  renderSpy: (id: string) => void;
}): JSX.Element;

학습 포인트

  • React.memo + 안정적 props 참조 = 재렌더 스킵
  • useCallback의 진짜 가치는 자식 메모이제이션 보존
  • renderSpy 패턴으로 렌더 횟수 단위 테스트
Sandpack 로드 중…