그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록Performance
Performance

리액트에서 컴포넌트가 불필요하게 리렌더링되는 상황을 방지하기 위한 방법을 설명해 주세요.

실무4/5
설계4/5
인간4/5
기초3/5

면접관의 질문 의도

React.memo·useMemo·useCallback의 이름을 외운 수준인지, 어디에 왜 적용해야 하는지와 효과를 어떻게 확인하는지까지 답할 수 있는지를 가른다.

큐레이션 답변

학습 자료

불필요 리렌더를 줄이는 출발점은 메모이제이션이 아니라 상태 위치다. 상태를 쓰는 컴포넌트 가까이에 두고 큰 Context를 구독 단위로 쪼개면 파급 렌더가 먼저 줄어든다. 그 위에서 React.memo·useMemo·useCallback을 병목으로 확인된 구간에만 얹어야 효과가 나온다. 측정 없이 훅부터 두르면 비교 비용과 코드 복잡도만 늘고 체감 성능은 그대로 남는다.

좋은 답변 구조

  1. 01어떤 컴포넌트가 왜 리렌더되는지부터 짚는다 (상태 위치·Context·prop 변화)
  2. 02메모이제이션보다 먼저 상태 분리·Context 쪼개기 같은 구조 조정을 우선 제시한다
  3. 03React.memo·useMemo·useCallback을 적용할 때의 비교 비용과 부작용을 함께 짚는다
  4. 04Profiler로 적용 전후를 측정해 검증하는 절차로 마무리한다

자주 실수하는 포인트

Profiler로 확인하지 않고 useMemo·useCallback부터 두른다
상태 위치·Context 분리 같은 구조 조정을 건너뛰고 곧장 React.memo로 막으려 한다
props로 내려가는 객체·함수가 매 렌더마다 새로 만들어지는 걸 놓쳐서 memo가 무효화된다

실무 맥락

  • 수백 행 이상의 테이블·리스트를 사용자가 빠르게 스크롤하는 화면
  • 전역 Context가 두꺼워져서 한 곳 갱신이 전체 화면을 다시 그리는 구조
  • 타이핑마다 폼 검증이 돌고 그 결과가 여러 컴포넌트로 퍼지는 입력 화면

본인 경험에 녹이는 힌트

리스트 스크롤이 끊겨서 Profiler로 원인을 좁혀본 경험이 있다면 어떤 prop 변화로 어떤 컴포넌트가 다시 그려졌는지 설명할 수 있다

큰 Context를 쪼개거나 상태를 끌어내려 렌더 폭을 줄여본 경험을 메모이제이션을 먼저 시도하지 않은 이유와 연결할 수 있다

useMemo·useCallback을 두르고도 효과가 없었던 사례가 있다면 의존성 배열이나 새 객체 생성 같은 무효화 원인을 짚어 답할 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1React.memo를 씌웠는데도 리렌더가 계속 일어나는 경우 어떤 원인을 의심하나요
Q2useMemo와 useCallback이 도리어 손해가 되는 상황은 어떤 경우인가요
Q3React Profiler에서 어떤 지표를 먼저 보고 어떤 순서로 좁혀가나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문