Programming

[TIL] useEffect

jay-dev 2023. 9. 30. 23:20

useEffect는 react hooks중 하나로 side effect를 수행하는 데 사용됩니다

1. 컴포넌트가 처음 렌더링되면, useEffect 내부 함수가 실행되고
2. 의존성 배열의 값이 바뀔 때 마다 useEffect 내부 함수가 실행됩니다
만약 빈배열이라면 컴포넌트가 마운트될 때 한번만 실행됩니다

 

매개변수

useEffect는 두 개의 매개변수를 받을 수 있습니다.

Effect 함수: 이 함수는 컴포넌트가 렌더링된 후에 실행됩니다. 이 함수에서는 데이터 fetching, 구독 설정, 수동으로 변경되는 DOM 등 side effect를 수행할 수 있습니다.


Dependency 배열: Dependency 배열은 effect 함수가 의존하는 state와 props를 명시합니다. 배열 내부의 어떤 값이 변하면, effect 함수는 다시 실행됩니다. 빈 배열을 전달하면, effect는 컴포넌트가 mount될 때 한 번만 실행됩니다.

 

Cleanup 함수
useEffect 내부에서 반환하는 함수를 Cleanup 함수라고 합니다. 이 함수는 컴포넌트가 unmount될 때, 또는 dependency가 변경될 때 호출되며, 이를 통해 구독 해지, 이벤트 리스너 제거 등의 cleanup 작업을 수행할 수 있습니다.

 

import React, { useState, useEffect } from 'react';

function ExampleComponent() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    // count가 변경될 때마다 이 effect가 실행됩니다.
    document.title = `Count: ${count}`;

    return () => {
      // cleanup: count가 변경되기 전에 실행됩니다.
      console.log('Cleaning up!');
    };
  }, [count]); // Dependency 배열에 count를 지정했습니다.

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

'Programming' 카테고리의 다른 글

[TIL] REST API, GraphQL  (0) 2023.10.06
[TIL] 프론트엔드 성능 최적화  (0) 2023.10.01
[TIL] Event Loop  (0) 2023.09.28
[TIL] Promise 객체  (0) 2023.09.28
[회고] 항해99 부트캠프 후기  (5) 2023.09.18