본문 바로가기

자기계발

함수형 컴포넌트 생명주기

 

• useEffect의 배열 형태에 따른 실행시점 차이 

+

• 마운트, 언마운트, 리렌더링, 특정 상태값 변화

 

마운트

마운트는 컴포넌트가 처음으로 DOM에 삽입되는 시점을 의미합니다. 이 단계에서 컴포넌트의 초기 설정이 완료되고, 초기 데이터 페칭, 이벤트 리스너 등록 등의 작업을 수행할 수 있습니다.

// 1. 컴포넌트가 최초 렌더링 되는 경우에 실행되는 useEffect 함수를 구현. (마운트)
useEffect(() => {
    console.log('컴포넌트가 마운트됨!');
  }, []);

 

빈 배열 []로 인해, 컴포넌트가 처음 렌더링될 때 한 번 실행됩니다.

 

 

업데이트

리렌더링은 컴포넌트의 상태가 변경되거나 부모 컴포넌트로부터 새로운 props를 받을 때 발생합니다. 이 과정에서 컴포넌트는 새로운 상태를 반영하여 다시 그려집니다.

// 2. 컴포넌트가 리렌더링 되는 경우에 실행되는 useEffect 함수. (업데이트)
  useEffect(() => {
    console.log('리렌더링됨!');
  });

특정 상태값 변화 감지

React에서 특정 상태값의 변화를 감지하고 싶을 때 useEffect의 의존성 배열을 활용합니다. 의존성 배열에 특정 상태값을 지정하면, 그 값이 변경될 때마다 해당 useEffect가 실행됩니다.

// 3. 특정값이 변경되는 경우에 실행되는 useEffect 함수. (특정 값 업데이트)
  useEffect(() => {
    console.log('특정변수명의 값이 변경됨');
  }, [특정값의 변수명);

 

 

언마운트

언마운트는 컴포넌트가 DOM에서 제거되는 시점입니다. 이 시점에 이벤트 리스너를 제거하거나 타이머를 클리어하는 등 정리 작업을 수행해야 메모리 누수를 방지할 수 있습니다.

// 4. 클린업 함수. (언마운트)
  useEffect(() => {
    return () => {
      console.log('언마운트 되었습니다.');
    };
  }, []);

 

 

• 의존성 배열이란?

의존성 배열은 useEffect 훅의 두 번째 인자로 전달되며, useEffect가 언제 실행될지를 제어합니다. 배열에 있는 값이 변경될 때만 useEffect가 실행되며, 이로 인해 성능 최적화와 불필요한 작업을 방지할 수 있습니다.

useEffect(() => {
  console.log('의존성 배열의 값이 변경되었을 때만 실행됩니다.');
}, [dependencyValue]); // dependencyValue가 변경될 때만 실행
  • 빈 배열 []: 컴포넌트가 마운트될 때 한 번만 실행
  • 값이 있는 배열 [value]: 배열 내 값이 변경될 때마다 실행
  • 의존성 배열이 없는 경우: 상태가 변경될 때마다 실행 (모든 리렌더링 시)

 

의존성  배열과 특정 상태값 변화감지의 차이점:

  • 특정 상태값 변화 감지: 특정 상태값이 변경될 때만 useEffect를 실행하는 방식입니다. useEffect가 특정 상태값에만 반응하도록 설계된 경우를 설명할 때 사용됩니다.
  • 의존성 배열: useEffect가 언제 실행될지를 결정하는 역할을 하며, useEffect의 실행 조건을 제어하는 기본 메커니즘입니다. 빈 배열로 전달되면 마운트 시 한 번만, 배열 내 값이 있으면 해당 값이 변경될 때만 실행됩니다.

결론적으로, 특정 상태값 변화 감지 은 특정 상태값의 변화를 감지하고 대응하기 위한 useEffect의 활용 예시를 설명하는 것이고, 의존성 배열은 useEffect의 실행 시점을 제어하는 도구인 의존성 배열의 역할과 사용법을 설명하는 것입니다.

 

 

참고문헌:https://ko.legacy.reactjs.org/docs/react-component.html#:~:text=componentDidMount()%20%EB%8A%94%20%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8%EA%B0%80,%EC%9D%84%20%EB%B3%B4%EB%82%B4%EA%B8%B0%20%EC%A0%81%EC%A0%88%ED%95%9C%20%EC%9C%84%EC%B9%98%EC%9E%85%EB%8B%88%EB%8B%A4.

 

'자기계발' 카테고리의 다른 글

Styled-Components 개념 정리하기  (0) 2024.09.20
SCSS 개념정리  (1) 2024.09.20
클래스 컴포넌트 생명주기  (0) 2024.09.13
강아지정보 페이지  (0) 2024.09.10
SPA & MPA 와 CSR & SSR 이란??  (0) 2024.09.02