effect chronology

effect는 setup보다 cleanup 순서를 먼저 기억해야 한다

mount 때 setup이 열리고, dependency가 바뀌면 새 setup 전에 이전 cleanup이 먼저 실행된다. unmount에서는 마지막 setup의 cleanup만 남는다.

1. mount commit

처음 화면에 붙은 직후

setup A 외부 시스템 연결

구독, 타이머, 요청처럼 React 밖의 작업을 연다.

2. deps update

의존 값이 바뀐 commit

cleanup A 이전 연결을 먼저 닫음

새 값으로 연결하기 전에 listener, timer, request를 정리한다.

setup B 새 deps로 다시 연결

이제 최신 props와 state를 읽는 effect가 시작된다.

3. next update

다음 변경도 같은 순서

cleanup B 직전 effect 정리

cleanup은 다음 setup보다 앞에 있는 안전장치다.

setup C 변경된 값으로 재동기화

deps 배열이 없으면 이 단계가 모든 commit 뒤 반복된다.

4. unmount

트리에서 사라질 때

cleanup C 마지막 연결을 닫음

남은 구독, 타이머, AbortController를 해제해 누수를 막는다.

mount

첫 commit 뒤 setup이 실행된다. StrictMode에서는 개발 중 재확인될 수 있다.

update

deps가 바뀌면 cleanup 이전값, setup 새값 순서로 실행된다.

unmount

더 이상 다음 setup은 없고 마지막 cleanup만 실행된다.