코드도보통지

02. useEffect: 사이드 이펙트와 선언적 동기화

React
Hook
Side Effect
외부 세계와의 통신을 '동기화' 관점으로 재정의하고, 7가지 실무 패턴으로 Effect를 완전히 통제하라.

사이드 이펙트(Side Effect)의 관리: 리액트 외부 세계와의 통신

무엇인가: 순수 함수적 렌더링을 벗어나 외부 시스템(API, DOM, 타이머)과 상호작용하는 모든 행위. useEffect는 이 비순수한 작업들을 렌더링 이후 안전하게 실행하는 격리 공간이다.

왜 쓰는가: 리액트 외부의 상태와 컴포넌트의 내부 상태를 안전하고 일관되게 동기화하기 위해. 의존성 배열이 이 동기화의 조건을 선언한다.

언제 쓰는가: 데이터 패칭, 이벤트 구독, 수동 DOM 조작, 외부 라이브러리 인스턴스화 시점. 단, 서버 컴포넌트(RSC) 환경에서는 useEffect 없이 직접 await fetch()를 사용하라.