반응형

useEffect는 리액트에서 컴포넌트의 생명주기(lifecycle) 를 다루기 위한 훅(Hook)으로, 컴포넌트가 마운트, 업데이트, 언마운트될 때 특정 작업을 수행할 수 있도록 도와줍니다.
🔸 1. useEffect란?
✅ 컴포넌트가 렌더링될 때 특정 작업을 수행하도록 설정하는 훅
- componentDidMount, componentDidUpdate, componentWillUnmount의 역할을 대체
- API 호출, 구독(subscription), 이벤트 리스너 설정 등에서 유용하게 사용됨
- 렌더링 이후 실행되며, 의존성 배열을 통해 실행 시점을 제어할 수 있음
💡 용어 설명:
- 생명주기(Lifecycle): 컴포넌트가 생성되고, 업데이트되며, 제거되는 과정.
- 마운트(Mount): 컴포넌트가 화면에 나타나는 순간.
- 언마운트(Unmount): 컴포넌트가 제거되는 순간.
- 의존성 배열(Dependency Array): useEffect가 언제 실행될지 결정하는 배열.
🔸 2. useEffect 기본 사용법
✅ 예제: 마운트될 때 실행
import { useEffect } from "react";
function Example() {
useEffect(() => {
console.log("컴포넌트가 마운트되었습니다!");
}, []);
return <h1>안녕하세요!</h1>;
}
📌 설명:
- 빈 의존성 배열([])을 전달하면, 컴포넌트가 마운트될 때 한 번만 실행됨.
- console.log("컴포넌트가 마운트되었습니다!")가 한 번 실행됨.
💡 추가 설명:
- 의존성 배열이 없으면 컴포넌트가 리렌더링될 때마다 실행됨.
🔸 3. 특정 값이 변경될 때 실행
✅ 예제: 상태 값이 변경될 때 실행
import { useState, useEffect } from "react";
function Counter() {
const [count, setCount] = useState(0);
useEffect(() => {
console.log(`카운트 값이 변경됨: ${count}`);
}, [count]);
return (
<div>
<p>카운트: {count}</p>
<button onClick={() => setCount(count + 1)}>증가</button>
</div>
);
}
📌 설명:
- count가 변경될 때마다 useEffect 내부 코드가 실행됨.
- 의존성 배열에 count를 추가하면, count 값이 변경될 때만 실행됨.
💡 추가 설명:
- 여러 개의 상태를 의존성 배열에 포함할 수도 있음: useEffect(() => {...}, [count, name])
🔸 4. 언마운트 시 실행 (정리 작업 수행)
✅ 컴포넌트가 제거될 때 실행하는 방법
✅ 예제: 이벤트 리스너 정리
import { useEffect } from "react";
function WindowWidthLogger() {
useEffect(() => {
const handleResize = () => {
console.log(`창 크기 변경됨: ${window.innerWidth}px`);
};
window.addEventListener("resize", handleResize);
return () => {
window.removeEventListener("resize", handleResize);
console.log("이벤트 리스너가 제거되었습니다.");
};
}, []);
return <h1>창 크기를 변경해보세요!</h1>;
}
📌 설명:
- window.addEventListener를 통해 창 크기 변경을 감지하는 이벤트 리스너를 추가.
- 언마운트될 때 (return 내부의 함수 실행) 이벤트 리스너를 제거하여 메모리 누수를 방지.
💡 추가 설명:
- API 요청을 취소하거나, 타이머를 정리할 때도 이 방법을 사용.
🔸 5. 개념 요약
✅ useEffect는 컴포넌트의 생명주기와 관련된 작업을 수행
✅ 의존성 배열([])을 통해 실행 시점을 제어할 수 있음
✅ 빈 배열([])이면 마운트될 때 한 번만 실행
✅ 의존성 배열에 상태를 추가하면 해당 값이 변경될 때 실행
✅ 클린업 함수(return)를 사용하여 언마운트 시 정리 작업 수행 가능
✅ API 호출, 이벤트 리스너 추가/제거, 타이머 정리 등에 활용됨
반응형
'IT > React Basic' 카테고리의 다른 글
[React] 초급 개념11 - Props Drilling과 해결 방법 (0) | 2025.02.26 |
---|---|
[React] 초급 개념10 - 컴포넌트 재사용성과 모듈화 (0) | 2025.02.26 |
[React] 초급 개념9 - 컴포넌트 스타일링 (CSS, Styled-components, Tailwind) (0) | 2025.02.26 |
[React] 초급 개념7 - useState 훅 기본 (0) | 2025.02.26 |
[React] 초급 개념6 - 리스트 렌더링과 key 속성 (0) | 2025.02.26 |
[React] 초급 개념5 - 조건부 렌더링 (삼항 연산자, && 연산자 활용) (0) | 2025.02.25 |
[React] 초급 개념4 - 이벤트 핸들링 (onClick, onChange 등) (0) | 2025.02.25 |
[React] 초급 개념3 - props와 state의 차이 (0) | 2025.02.25 |
댓글