리액트
useEffect
생각없는 개발자
2025. 1. 24. 15:03
useEffect는 리액트 훅 중 하나로, 컴포넌트의 부수 효과를 처리하기 위해 사용됩니다. 컴포넌트가 렌더링 되거나 업데이트될 때, 그리고 컴포넌트가 언마운트될 때 특정 작업을 수행할 수 있도록 도와줍니다.
왜 useEffect를 사용하는가?
React는 컴포넌트의 렌더링과 상태 관리를 중심으로 설계되었지만, 다음과 같은 부수 효과를 처리해야 하는 경우가 있습니다.
- 데이터 가져오기(API 호출)
- 컴포넌트가 마운트되었을 때 서버에서 데이터를 가져오는 작업
- 브라우저 API 사용
- document.title 변경, 이벤트 리스너 등록/해제 등
- 타이머 및 구독 관리
- setInterval 또는 WebSocket 연결 관리
- 컴포넌트 언마운트 처리
- 리소스 정리 작업
useEffect의 사용 방법
1. 기본 구조
useEffect는 두 개의 인자를 받습니다.
- 첫 번째 인자 : 실행할 함수
- 두 번째 인자 : 의존성 배열
import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
useEffect(() => {
console.log(`Count has been updated to ${count}`);
}, [count]);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
위 코드에서 useEffect는 count가 변경될 때마다 실행됩니다.
2. 의존성 배열
- 빈 배열 ([])
- 컴포넌트가 처음 마운트될 때 한번만 실행됩니다.
useEffect(() => {
console.log('Component mounted!');
}, []);
- 특정 값 ([deps])
- 의존성 배열에 있는 값이 변경될 때만 실행됩니다.
useEffect(() => {
console.log(`Count changed to ${count}`);
}, [count]);
- 의존성 배열 생략
- 의존성 배열에 있는 값이 변경될 때만 실행됩니다.
useEffect(() => {
console.log('This runs on every render');
});
3. cleanup 함수
useEffect 내부에서 정리가 필요한 작업이 있을 경우, 반환값으로 정리 함수를 정의합니다. 정리 함수는 컴포넌트가 언마운트 되거나 의존성 값이 변경될 때 호출됩니다.