- useEffect는 함수형 컴포넌트에서 렌더링 후 부수 효과를 안전하게 관리하는 React Hook으로, 순수 함수 원칙을 지키며 UI 일관성을 보장합니다. ⚛️
- 클린업 함수는 메모리 누수 방지 및 비동기 요청의 경쟁 상태로 인한 데이터 꼬임 문제를 해결하기 위해 타이머 해제, 이벤트 리스너 제거, AbortController를 통한 요청 취소 등 부수 효과를 정리하는 데 필수적입니다. 🧹
- 의존성 배열은 useEffect의 실행 시점을 정밀하게 제어하며, 빈 배열([])은 최초 마운트 시점에만, 특정 값은 해당 값 변경 시에만 효과를 실행하도록 합니다. 🚦
- 의존성 배열은 Object.is를 사용하여 값들의 얕은 비교를 수행하므로, 참조 타입(객체, 배열, 함수)을 사용할 때는 useCallback이나 useMemo를 고려하여 불필요한 재실행을 방지해야 합니다. 🔍
- useEffect는 컴포넌트 렌더링이 완료된 후 자식 컴포넌트의 Effect가 먼저 실행되고 그 다음 부모 컴포넌트의 Effect가 실행되며, 클린업은 역순으로 진행됩니다. 🔄
- 렌더링 로직 내에서 파생될 수 있는 상태(예: 입력 유효성 검사 메시지)는 useEffect 없이 직접 처리하여 불필요한 리렌더링과 상태 관리를 줄일 수 있습니다. 💡
- 하나의 useEffect에 여러 관심사를 두지 않고, 각기 다른 부수 효과(예: 데이터 패칭, 이벤트 리스너)는 별도의 useEffect로 분리하여 가독성과 유지보수성을 높입니다. 🧩
- useEffect 콜백 함수에 이름을 부여하면 코드의 의도를 명확히 하고, 디버깅 시 에러 스택 트레이스에서 문제 발생 지점을 쉽게 파악할 수 있어 개발 효율성을 증대시킵니다. 🏷️
데브허브 | DEVHUB | [10분 테코톡] 써밋의 useEffect