useEffect

yeonnnn·2025년 4월 9일

React

목록 보기
5/12
post-thumbnail

컴포넌트를 외부 시스템에 연결하고 동기화할 수 있게 하는 hook
-> 네트워크, 브라우저 DOM, 애니메이션, UI 라이브러리 위젯, React가 아닌 코드를 다루는 것이 가능하다.

⭐ 외부 시스템이 관여하지 않는 경우, props 또는 state가 변경될 때 컴포넌트의 state를 업데이트하려는 경우에는 useEffect를 사용하지 않는다.

✅ 기본 사용법

useEffect(setup, dependecies)
  • setup : Effect의 로직 함수, clean up(정리) 함수를 반환 할 수 있다.
    -> 정리 함수 : 리렌더링 되었을 경우 정리 함수를 실행한 후 새로운 값으로 setup 함수를 실행한다.

  • dependecies : [dep1, dep2, dep3]의 형태로 setup 함수에서 참조되는 값.
    -> 생략할 경우 : 컴포넌트가 리렌더링 될 때마다 실행된다.
    -> [ ] 빈 의존성 배열: 초기 렌더링 이후 다시 실행되지 않는다.

export default function Counter() {
  const [count, setCount] = useState(0);
  
  useEffect(() =>{
  	if (count !== 0) alert(`You clicked ${count} times!`);
  }, [count]);

  return (
    <button onClick={()=> setCount(count+1)}>
      Click me!
    </button>
  )
}

➕ clean up 함수
컴포넌트가 화면에서 사라질 때, 리소스 정리를 통해 메모리 누수를 방지할 때, effect 실행 순서를 제어해야 할 때 사용 된다.

import { useState, useEffect } from "react";

export default function Counter() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    const interval = setInterval(() => {
      setCount((count) => count + 1);
    },1000)
    
    // ⭐ cleanUp 함수
	return () => clearInterval(interval);
  }, []);

  return <h1>{count}</h1>;
}
profile
차근차근, 한 걸음씩

0개의 댓글