React · useEffect

useEffect dependency와 외부 동기화 경계

useEffect는 렌더 후 실행되는 만능 함수가 아니라, React 바깥 시스템과 현재 컴포넌트 상태를 맞추기 위한 동기화 지점이다.

01

기준 확인

effect가 없으면 외부 시스템과 맞출 수 없는 일인지 먼저 묻는다.

02

의존성 선언

effect 내부에서 읽는 props와 state를 dependency에 반영한다.

03

실행

렌더 결과가 화면에 반영된 뒤 외부 작업을 수행한다.

04

useEffect의 외부 동기화 경계 정리

다음 실행 전이나 언마운트 때 이전 구독과 요청을 정리한다.

fetch
데이터 요청 id나 query 변경에 맞춰 요청을 다시 수행
취소 또는 최신성 확인 필요
subscription
외부 이벤트 websocket, media query, storage event 구독
cleanup 필수
timer
반복 작업 setInterval과 timeout을 시작하고 해제
stale closure 한계
derived
잘못된 effect props에서 계산 가능한 값을 state로 복사
렌더 중 계산이 낫다

목적 · 의존성 · 정리 점검

목적 외부 시스템이 없다면 effect를 제거할 수 있는지 본다.
의존성 lint 경고를 무시하기보다 구조를 고친다.
동기화 계약 판별 구독·타이머·요청이 컴포넌트 밖에 남지 않는다.
경쟁 느린 이전 요청이 최신 결과를 덮지 않는다.