🖋️ useEffect 의 정리함수는 언제 사용?
WHEN ?
이벤트 리스너 추가 및 제거
useEffect(() => {
const handleResize = () => {
console.log('Window resized');
};
window.addEventListener('resize', handleResize);
return () => {
window.removeEventListener('resize', handleResize);
};
}, []);
외부 데이터 소스 구독
useEffect(() => {
const subscription = dataSource.subscribe();
return () => {
subscription.unsubscribe();
};
}, []);
Timer 및 Interval
useEffect(() => {
const timerId = setTimeout(() => {
console.log('This runs after 1 second');
}, 1000);
return () => {
clearTimeout(timerId);
};
}, []);
API 요청 취소
useEffect(() => {
const source = axios.CancelToken.source();
axios.get(url, { cancelToken: source.token })
.then(response => {
console.log(response.data);
})
.catch(error => {
if (axios.isCancel(error)) {
console.log('Request canceled', error.message);
} else {
// handle error
}
});
return () => {
source.cancel('Operation canceled by the user.');
};
}, [url]); // Assuming 'url' is a dependency
React 애플리케이션의 성능을 유지하고 버그를 방지하는 데 필수적
정리를 적절하게 사용하면 구성 요소가 애플리케이션의 수명 주기 동안 효율적이고 예측 가능하게 작동