메모이제이션은 비용이 많이 드는 함수 호출의 결과를 저장하고 동일한 입력이 다시 발생할 때 캐시된 결과를 반환하여 컴퓨터 프로그램의 속도를 높이는데 주로 사용되는 최적화 기술이다.
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>
}