컴포넌트의 Lifecycle을 3가지로 분류해보자.
1. 컴포넌트 마운트
2. 컴포넌트 업데이트(리렌더링)
3. 컴포넌트 언마운트
useEffect는 이러한 생명주기 사이사이에 간섭을 줄 수 있는 Hook이다.
useEffect는 실행할 함수코드 & 의존성 배열, 2가지의 인수를 받으며 컴포넌트가 렌더링 된 후에 실행된다.
import React, { useEffect } from 'react';
function App() {
useEffect(() => {
console.log('I am useEffect');
})
return (
// 컴포넌트
)
}
import React, { useEffect } from 'react';
function App() {
useEffect(() => {
console.log('I am useEffect');
}, [])
return (
// 컴포넌트
)
}
import React, { useEffect } from 'react';
function App() {
useEffect(() => {
console.log('I am useEffect');
}, [dependency])
return (
// 컴포넌트
)
}
useEffect에 return문으로 함수를 추가하여 clean up 함수를 추가할 수 있다.
이는 메모리 정리 및 오류를 방지하는데 도움이 된다.
import React, { useEffect } from 'react';
function App() {
useEffect(() => {
const timer = setInterval(() => {
console.log('timer');
}, 1000);
return () => {
clearInterval(timer);
}
}, [dependency])
return (
// 컴포넌트
)
}
useEffect의 return문, 즉 clean up function은 두 가지 경우에 실행된다.
컴포넌트 언마운트
side effect 실행 전