메모이제이션은 비용이 많이 드는 함수 호출의 결과를 저장하고 동일한 입력이 다시 발생할 때 캐시된 결과를 반환하여 컴퓨터 프로그램의 속도를 높이는데 주로 사용되는 최적화 기술이다.
React.memo는 고차 컴포넌트(Higher Order Component)입니다.컴포넌트가 동일한 props로 동일한 결과를 렌더링해낸다면,
React.memo를 호출하고 결과를 메모이징(Memoizing)하도록 래핑하여 경우에 따라 성능 향상을 누릴 수 있습니다. 즉, React는 컴포넌트를 렌더링하지 않고 마지막으로 렌더링된 결과를 재사용합니다.
💡 부모 컴포넌트가 렌더링 되면 모든 자식 컴포넌트 또한 렌더링 되는데 props가 변경되지 않았다면 자식 컴포넌트는 렌더링 될 필요가 없다. 이때 React.memo 함수를 사용해 불필요한 렌더링을 방지해 준다.
React.memo는 props 변화에만 영향을 준다.props가 복잡한 객체인 경우 React.memo는 얕은 비교만 한다.React.memo의 두번째 인자로 비교할 수 있는 함수를 넘겨주면 된다.props로 자주 렌더링 되는 경우PureComponent를 확장해서 사용하거나 shouldComponentUpdate()props로 자주 렌더링 되는 경우react에서 React를 import 해준다.React.memo로 감싸준다.

// useMemo(() => fn, deps)
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
props가 변하지 않으면 리렌더링 되지 않고 이전의 메모이즈된 결과를 반환한다.React.memo는 고차 컴포넌트(Higher Order Component), useMemo는 React Hook이다.React.memo는 클래스형, 함수형 컴포넌트 모두 사용 가능하지만 useMemo는 함수형 컴포넌트에서만 사용 가능하다.react에서 useMemo를 import 해준다.useMemo로 감싸준다.function Component({ a, b }) {
const result = useMemo(() => compute(a, b), [a, b]);
return <div>{result}</div>
}