비동기 effect는 loading, success, error, cleanup 상태로 읽는다
mount 후 fetch가 시작되고 cleanup이 오래된 응답 반영을 막는 흐름을 명시하면 stale response 처리가 쉬워진다.
loading을 true로 둔다.
응답 전에는 이전 상태와 구분한다.
nullable 상태를 명확히 둔다.
살아 있는 컴포넌트만 상태를 바꾼다.
| 구분 | 의미 | 판단 |
|---|---|---|
| 상태 타입 | data: T | null, error: Error | null | UI 분기를 예측 가능하게 함 |
| deps | effect 재실행 조건 | 누락 시 오래된 값 사용 위험 |
| custom hook | 복잡한 fetch 분리 | 컴포넌트 계약 단순화 |
핵심 useEffect 비동기는 await 문법보다 상태 전이와 정리 경계를 타입으로 드러내는 설계가 중요하다.