React

 

useCallback과 useMemo는 React의 내장 Hook으로, 둘 다 메모이제이션(memoization)을 통해 특정 값을 재사용하는 데 도움이 됩니다. 

그러나 둘 사이에는 중요한 차이점이 있습니다.

useCallback은 메모이제이션된 '함수’를 반환합니다.

즉, 특정 함수를 새로 만들지 않고 재사용하고 싶을 때 사용합니다.

useCallback은 함수와 상관없는 상태 값이 변할 때, 함수 컴포넌트에서 불필요한 업데이트가 일어나는 것을 방지해 줍니다.


반면에 useMemo는 메모이제이션된 '값’을 반환합니다.

즉, 값을 연산할 때 사용합니다.

useMemo는 주어진 렌더에서 수행해야 하는 작업의 양을 줄이고, 컴포넌트가 다시 렌더링해야 하는 횟수를 줄이면서 리렌더링을 최적화하게 됩니다.

두 Hook 모두 렌더링 성능을 최적화하는 데 도움이 되지만, 사용하는 상황과 목적에 따라 적절한 Hook을 선택해야 합니다.

 

 

 

import React, { useState, useCallback, useMemo } from 'react';

function Example() {
  const [count, setCount] = useState(0);

  const increment = useCallback(() => {
    setCount(count + 1);
  }, [count]);

  const double = useMemo(() => {
    return count * 2;
  }, [count]);

  return (
    <div>
      <p>Count: {count}</p>
      <p>Double: {double}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
}

export default Example;

 

위의 코드는 useCallback과 useMemo를 사용하는 간단한 React 컴포넌트입니다.

  • useState를 사용하여 count라는 상태를 만들고 초기값을 0으로 설정했습니다.
  •  
  • useCallback을 사용하여 increment라는 함수를 메모이제이션했습니다.
  •  
  • 이 함수는 count 상태를 1 증가시키는 역할을 합니다. useCallback의 두 번째 인자로 count를 전달하여 count 값이 변경될 때마다 increment 함수를 새로 생성하도록 했습니다.
  •  
  • useMemo를 사용하여 double이라는 값을 메모이제이션했습니다.
  •  
  • 이 값은 count의 두 배 값을 가집니다. useMemo의 두 번째 인자로 count를 전달하여 count 값이 변경될 때마다 double 값을 새로 계산하도록 했습니다.
  •  
  • 마지막으로, count와 double 값을 화면에 출력하고, increment 함수를 호출하는 버튼을 만들었습니다.
  •  

이렇게 useCallback과 useMemo를 사용하면, 불필요한 함수 생성이나 값 계산을 방지하여 성능을 최적화할 수 있습니다.

 

그러나 이 두 Hook은 필요한 경우에만 사용하는 것이 좋습니다. 불필요하게 사용하면 오히려 성능을 저하시킬 수 있습니다.

 

 

 

 

 

 

 

about author

PHRASE

Level 60  라이트

복이 있다고 다 누리지 말라. 복이 다하면 몸이 빈궁해진다. 권세가 있다고 다 부리지 말라. 권세가 다하면 원수와 서로 만나게 된다. 복이 있거든 항상 스스로 아끼고 권세가 있거든 항상 스스로 공손하라. 인생의 교만과 사치는 처음은 있으나 많은 경우에 끝이 없다. -명심보감

댓글 ( 0)

댓글 남기기

작성