100log

About

React - useEffect

React

React - useEffect

useEffct

useEffct 형태

clean up

main-img

React - useEffect

useEffct

useEffect는 외부 시스템과 컴포넌트를 동기화하는 React Hook입니다. - React 공식 레퍼런스 -

컴포넌트의 Lifecycle을 3가지로 분류해보자.
1.컴포넌트 마운트
2.컴포넌트 업데이트(리렌더링)
3.컴포넌트 언마운트

useEffect는 이러한 생명주기 사이사이에 간섭을 줄 수 있는 Hook이다.


useEffct 형태

useEffect는 실행할 함수코드 & 의존성 배열, 2가지의 인수를 받으며 컴포넌트가 렌더링 된 후에 실행된다.

  • 기본
    의존성 배열이 없는 경우 컴포넌트가 랜더링 될 때마다 side effect가 실행된다.
import React, { useEffect } from 'react';

function App() {
  useEffect(() => {
    console.log('I am useEffect');
  })

  return (
    // 컴포넌트
  )
}
  • 빈 의존성 배열
    비어있는 의존성 배열이 있을 경우 컴포넌트가 마운트 될 때 한번만 실행된다.
import React, { useEffect } from 'react';

function App() {
  useEffect(() => {
    console.log('I am useEffect');
  }, [])

  return (
    // 컴포넌트
  )
}
  • 값이 있는 의존성 배열
    배열 내의 값이 변경될 때마다 실행된다, 의존성 값이 state라면 당연히 컴포넌트도 다시 렌더링된다.
import React, { useEffect } from 'react';

function App() {
  useEffect(() => {
    console.log('I am useEffect');
  }, [dependency])

  return (
    // 컴포넌트
  )
}

clean up

useEffect에 return문으로 함수를 추가하여 clean up 함수를 추가할 수 있다.
이는 메모리 정리 및 오류를 방지하는데 도움이 된다.

import React, { useEffect } from 'react';

function App() {
  useEffect(() => {
    const timer = setInterval(() => {
      console.log('timer');
    }, 1000);

    return () => {
      clearInterval(timer);
    }
  }, [dependency])

  return (
    // 컴포넌트
  )
}

useEffect의 return문, 즉 clean up function은 두 가지 경우에 실행된다.
1.컴포넌트 언마운트

  • 컴포넌트가 DOM에서 제거될 때 실행되어 메모리 누수를 방지하고 컴포넌트 리소스를 정리할 수 있다.

2.side effect 실행 전

  • 의존성 배열에 있는 값이 변경되어 side effect가 다시 실행되기 전에 이전 side effect의 효과를 정리한다.
profile_img백종민
1993
Seoul
커리어 발전을 위한 새로운 기회를 찾고있습니다.