React.memo는 인자로 들어간 컴포넌트에 어떤 props가 입력되는지 확인합니다.
입력되는 모든 props의 신규 값을 확인한 뒤, 기존의 props의 값과 비교하도록 리액트에게 전달합니다.
props의 값이 바뀐 경우에만 컴포넌트를 재실행 및 재평가하게 됩니다.
부모 컴포넌트가 변경되었지만 React.memo의 인자로 들어간 컴포넌트의 props 값이 바뀌지 않았다면 컴포넌트 실행은 건너뜁니다.(재평가 하지 않습니다)
function MyComponent(props) {
/* props를 사용하여 렌더링 */
}
export default React.memo(MyComponent);
Props 변화에만 의존하는 최적화 방법입니다.
React.memo를 사용하여도 만약, state와 관련된 hook을 사용한다면 state와 context가 변할 때마다 재평가 됩니다.
React.memo의 최적화는 컴포넌트를 재평가하는 데에 필요한 성능 비용과 props를 비교하는 성능 비용을 서로 맞바꾸는 겁니다.
따라서 불필요한 랜더링 횟수를 줄일 수 있지만 추가적인 메모리를 소비하기 때문에 정말 필요한 상황에서만 사용해야합니다.