Effect Cleanup

effect cleanup

`useEffect`는 렌더링 밖의 세계와 연결된다. 타이머, 이벤트, 구독, 요청을 열었다면 deps 변경과 언마운트 시점의 정리도 함께 둔다.

timer

예약 작업

setTimeout, setInterval은 cleanup에서 clear 함수로 취소한다.

listener

이벤트 리스너

추가한 대상과 같은 핸들러로 removeEventListener를 호출한다.

subscribe

구독

WebSocket, RxJS, 외부 store 구독은 unsubscribe 함수를 반환한다.

request

비동기 요청

새 요청이 이전 응답을 덮지 않도록 AbortController나 최신성 검사를 둔다.

mount

effect가 외부 작업을 시작한다.

deps change

새 effect 전에 이전 cleanup이 먼저 실행된다.

unmount

마지막 cleanup으로 남은 연결을 닫는다.