오늘은 React에서 성능 최적화를 위해 사용되는 useMemo 훅에 대해 학습했습니다. useMemo는 컴포넌트의 불필요한 재연산을 방지하여 성능을 최적화하는 데 매우 유용합니다.
useMemo는 React 훅으로, 특정 계산의 결과를 메모이제이션하여, 의존성 배열이 변경되지 않는 한 해당 계산을 재실행하지 않고 캐시된 값을 반환합니다. 이는 계산 비용이 큰 작업이나, 리렌더링 시 매번 재계산할 필요가 없는 경우에 유용합니다.
useMemo는 함수와 의존성 배열을 인자로 받습니다. 함수는 메모이제이션하고자 하는 계산을 포함하고, 의존성 배열은 언제 해당 계산이 다시 수행되어야 하는지를 결정합니다.
const memoizedValue = useMemo(() => {
// 계산이 많이 드는 작업
return computeExpensiveValue(a, b);
}, [a, b]);
다음은 useMemo를 사용하여 성능을 최적화하는 예제입니다. items 배열이 변경될 때만 정렬을 다시 수행하고, 그렇지 않으면 캐시된 정렬 결과를 사용합니다.
import React, { useMemo } from 'react';
function SortedList({ items }) {
const sortedItems = useMemo(() => {
console.log('정렬 중...');
return [...items].sort((a, b) => a - b);
}, [items]);
return (
<ul>
{sortedItems.map(item => (
<li key={item}>{item}</li>
))}
</ul>
);
}
이 예제에서 items가 변경될 때만 정렬 연산이 실행되며, 이로 인해 불필요한 정렬 연산을 방지할 수 있습니다.
useMemo는 모든 계산에 사용할 필요는 없으며, 다음과 같은 경우에 사용하면 좋습니다.
useMemo를 과도하게 사용하면 코드의 복잡성이 증가할 수 있습니다. 불필요한 경우 사용을 피하는 것이 좋습니다.useMemo는 렌더링을 최적화하지만, 비동기 작업이나 사이드 이펙트를 다루는 데는 적합하지 않습니다. 그런 경우에는 useEffect나 useCallback을 사용해야 합니다.useMemo는 React 컴포넌트의 성능 최적화를 위한 강력한 도구입니다. 특히 계산 비용이 큰 작업이나 참조 동등성을 보장해야 하는 경우에 유용합니다. 오늘 학습한 내용을 통해 useMemo를 적절히 사용하여 성능을 최적화하는 방법을 이해하게 되었습니다.