첫 렌더와 DOM 반영
컴포넌트가 처음 나타나고 초기 props와 state로 화면을 만듭니다.
컴포넌트의 등장·갱신·제거와 effect의 실행·정리는 같은 시간축에서 읽어야 외부 연결이 남지 않습니다.
컴포넌트가 처음 나타나고 초기 props와 state로 화면을 만듭니다.
DOM 반영 뒤 데이터 요청, 타이머, 구독, 이벤트 리스너를 설정합니다.
props나 state가 바뀌고 의존성 값이 달라지면 effect를 다시 실행합니다.
재실행 직전 이전 타이머·구독·요청을 끊어 두 효과가 겹치지 않게 합니다.
화면에서 사라질 때 마지막 cleanup을 실행해 외부 자원을 남기지 않습니다.
핵심effect에서 외부 시스템과 연결했다면 반환한 cleanup에서 정확히 반대 동작으로 연결을 끊습니다.