리액트 useEffect 구조와 원리

Posted by : on

Category : Frontend1

컴포넌트도 생명주기가 있다.

컴포넌트는 마운트(생성), 리렌더링(업데이트), 언마운트 생명주기를 거치며, 이 과정에서 특정 작업을 수행할 수 있다.

useEffect 구조와 원리

useEffect는 컴포넌트의 생명주기 동안 특정 작업을 수행하기 위해 사용하는 훅이다. 이 훅은 컴포넌트가 마운트되거나 업데이트될 때 실행되는 함수를 정의할 수 있다.

useEffect(() => {
  // 컴포넌트가 마운트되거나 업데이트될 때 실행되는 코드
  return () => {
    // 컴포넌트가 언마운트될 때 실행되는 코드
  };
}, [dependencies]);

📌 인자 목록

인자 설명
effect 컴포넌트가 마운트되거나 업데이트될 때 실행되는 함수.
cleanup effect에서 반환하는 함수로, 컴포넌트가 언마운트될 때 실행됨.
dependencies 배열 형태로, 이 배열에 포함된 값이 변경될 때만 effect가 실행됨. 빈 배열([])이면 최초 마운트 시만 실행.

useEffect는 컴포넌트가 마운트될 때와 업데이트될 때 실행되는 함수를 정의할 수 있다. 이 함수는 컴포넌트가 언마운트될 때 실행되는 cleanup 함수를 반환할 수 있다.

** 참고 **

컴포넌트 언마운트 시점 언마운트(unmount)는 컴포넌트가 DOM에서 제거되는 시점을 말합니다. 다음과 같은 상황에서 컴포넌트가 언마운트된다

  1. 조건부 렌더링에서 제거될 때
{
  isVisible && <MyComponent />;
} // isVisible이 false가 되면 언마운트
  1. 부모 컴포넌트에서 더 이상 렌더링하지 않을 때
  • 부모 컴포넌트의 상태 변경으로 자식 컴포넌트가 제거될 때
  • 부모 컴포넌트 자체가 언마운트될 때
  1. 라우팅 변경으로 다른 페이지로 이동할 때
  • 현재 페이지 컴포넌트가 다른 페이지로 대체되면 언마운트됨
  1. 동적 리스트에서 항목이 제거될 때
  • 배열에서 항목을 제거하면 해당 컴포넌트도 언마운트됨

useEffect의 클린업 함수는 이러한 언마운트 시점에 실행되어 이벤트 리스너 제거, 타이머 클리어, 구독 취소 등의 정리 작업을 수행.