useMemo는 React에서 비싼 계산 작업을 메모이제이션(Memoization)하여 렌더링 성능을 최적화하기 위해 사용되는 Hook이다.
목적:
계산 비용이 높은 작업이 반복적으로 실행되는 것을 방지하기 위해 사용한다.
동작 원리:
const memoizedValue = useMemo( () => computeExpensiveValue(a, b), [a,b] );
React는 상태(state)나 props가 변경되면 컴포넌트 전체를 다시 렌더링한다. 렌더링 과정에서 불필요하게 무거운 계산이 반복되면 성능 문제가 생길 수 있다.
function App({ a, b }) {
const memoizedValue = useMemo(() => {
console.log("비싼 계산 중...");
return a + b
}, [a,b]);
return <div>결과: {memoizedValue}</div>;
}
useMemo는 의존성 배열에 명시된 값이 변할 때만 계산 작업을 다시 실행한다.
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), []);
[]로 비어 있으면, 컴포넌트가 처음 렌더링 될 때만 계산을 수행하고 이후에는 값을 재사용 한다.useMemo는 렌더링 성능을 최적화하기 위해 계산 작업을 메모이제이션하는 Hook이다.
의존성 배열을 잘 설정해야 예상대로 동작하며, 잘못된 설정은 오히려 오류를 유발할 수 있으니 주의해야 한다.