useEffect는 React에서 함수형 컴포넌트에 사이드 이펙트(부가 작업)을 처리하기 위해 사용하는 훅이다.
React 애플리케이션에서 흔히 쓰이는 개념이다.
React 컴포넌트가 렌더링될 때와 상태(state)나 props가 변경될 때 특정 작업(부가 작업)을 수행하기 위해 사용한다.
useEffect( () => {
// 실행할 작업
return () => {
// cleanup 작업 (선택 사항)
};
}, [의존성 배열]);
[]), 컴포넌트가 처음 렌더링될 때만 실행 된다.import React, { useState, useEffect } from "react";
function Counter() {
const [count, setCount] = useState(0);
useEffect(() => {
// 브라우저 제목 변경
document.title = `${count}번 클릭했습니다.`;
}, [count]); // count가 변경될 때마다 실행
return (
<div>
<p>총 {count}번 클릭했습니다.</p>
<button onClick={() => setCount(count + 1)}>클릭</button>
</div>
);
}
export default Counter;
동작 설명:
[count] 배열이 없으면 상태가 변경되어도 useEffect가 실행되지 않는다.import React, { useState, useEffect } from "react";
function UserStatus({ userId }) {
const [isOnline, setIsOnline] = useState(null);
useEffect(() => {
function handleStatusChange(status) {
setIsOnline(status.isOnline);
}
// 구독 설정
ServerAPI.subscribeUserStatus(userId, handleStatusChange);
// cleanup (구독 해제)
return () => {
ServerAPI.unsubscribeUserStatus(userId, handleStatusChange);
};
}, [userId]); // userId가 변경될 때마다 실행
if (isOnline === null) {
return <div>대기중...</div>;
}
return <dib>{isOnline ? "온라인" : "오프라인"}</dib>;
}
export default UserStatus;
동작 설명:
빈 배열([]):
특정 값 포함([count]):
배열 생략:
이 두 개념은 React 컴포넌트의 생명주기(lifecycle)와 관련이 있다.
정의:
React 컴포넌트가 더 이상 화면에 표시되지 않을 때, 즉 DOM에서 제거될 때를 "언마운트(unmount)"라고 한다.
언제 발생하나요?
정의:
useEffect에서 반환(return)하는 함수로, 컴포넌트가 언마운트될 때나 의존성 값이 변경될 때 호출 된다.
목적: