useEffect(콜백 함수, 의존성 배열)
useEffect(() => {
const interval = setInterval(() => {
console.log("interval");
}, 1000);
// 클린업 함수
return () => {
clearInterval(interval);
};
}, []);
🔍 메모이제이션이란?
중복 계산을 피하기 위해 계산 결과를 저장해두고, 동일한 입력 값에 대해서는 이미 계산된 결과를 재사용하는 방법
const MyComponent = React.memo(() => {})
const MyComponent = React.memo(({ count }) => {
return <div>{count}</div>
})
import { useState, useCallback } from 'react';
const MyComponent = () => {
const [count, setCount] = useState(0);
const increment = useCallback(() => {
setCount((prevCount) => prevCount + 1);
}, []);
return <button onClick={increment}>Increment</button>;
};
const MyComponent = () => {
const [count, setCount] = useState(0);
const expensiveCalculation = useMemo(() => {
return count * 2;
}, [count]);
return (
<div>
<p>Result: {expensiveCalculation}</p>
<button onClick={() => setCount((prev) => prev + 1)}>Increment</button>
</div>
);
}
기능 | React.memo | useCallback | useMemo |
---|---|---|---|
사용 목적 | 컴포넌트 재렌더링 방지 | 함수 재생성 방지 | 계산 재실행 방지 |
리턴 값 | 메모이제이션된 컴포넌트 | 메모이제이션된 함수 | 메모이제이션된 계산 결과 |
사용 대상 | 컴포넌트 | 함수 | 값 |
주요 사용 시점 | props가 변경되지 않을 때 | 콜백을 자식 컴포넌트에 전달할 때 | 복잡한 연산이 필요할 때 |