새소식

프론트엔드/React

React Hook - useMemo

  • -

안녕하세요 lika-7입니다

이번시간에는 react hook 중 useMemo에 대해서 설명하겠습니다

useMemo란

useMemo는 React에서 제공하는 훅 중 하나로, 성능 최적화와 계산 비용을 줄이기 위해 사용됩니다. 이 훅은 주로 연산 비용이 높은 함수나 연산을 수행할 때 사용됩니다.

useMemo는 두 개의 인수를 가지며 다음과 같은 역할을 수행합니다:

  1. 첫 번째 인수: 계산할 함수 또는 값입니다.

    이 함수 또는 값은 useMemo의 두 번째 인수인 종속성 배열이 변경될 때에만 다시 계산됩니다.

    종속성 배열에 있는 값이 변경되지 않는 한, useMemo는 캐시된 값을 반환합니다.

  1. 두 번째 인수 (종속성 배열): useMemo가 다시 계산되어야 하는 조건을 정의하는 배열입니다.

    이 배열에 포함된 값들 중 하나라도 변경될 때, useMemo의 첫 번째 인수로 전달된 함수 또는 값이 다시 계산됩니다.

useMemo는 다음과 같은 상황에서 유용합니다:

  • 렌더링 과정에서 반복적으로 계산하는 비용이 높은 작업, 예를 들면 배열의 필터링 또는 정렬.
  • 컴포넌트 내에서 동일한 결과를 얻으려면 반복적으로 계산하는 계산 비용이 높은 연산.
  • 렌더링 시 불필요한 계산을 방지하고, 애플리케이션의 성능을 향상시키기 위한 목적.

예를 들어, useMemo를 사용하여 계산 비용이 높은 함수의 결과를 캐싱하고, 종속성 배열에 변경을 감지할 값들을 넣어 성능을 최적화할 수 있습니다.

jsxCopy code
import { useMemo } from 'react';

function MyComponent({ list }) {
  const sortedList = useMemo(() => {
    // list를 정렬하는 비용이 높은 연산
    return list.sort((a, b) => a - b);
  }, [list]);

  return (
    <ul>
      {sortedList.map((item) => (
        <li key={item}>{item}</li>
      ))}
    </ul>
  );
}

위 예제에서, sortedListlist 배열의 정렬 결과를 캐싱하며, list가 변경될 때만 다시 정렬 연산이 수행됩니다. 이렇게 함으로써 렌더링 시 불필요한 비용을 줄이고 성능을 향상시킬 수 있습니다.

'프론트엔드 > React' 카테고리의 다른 글

리덕스란  (1) 2023.12.11
{ }, ( ) 차이, feat return  (1) 2023.12.11
React Hook Form - register 메소드  (1) 2023.10.29
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.