1장 리액트 파헤치기 - chhw130/Front-Basic-Deep-Dive GitHub Wiki
메모이제이션 자체를 하는 것도 메모리를 사용하는 것이고, 그렇다고 메모이제이션을 하지 않으면 값비싼 렌더링 비용을 써야한다.
하지만 어디까지 메모이제이션을 해야할 지 정하는 소통 비용 + 비싼 렌더링 비용 ->
가능한 메모이제이션 하자는 의사결정의 방향성이 좋아보임.
useCallback과 useMemo는 도대체 언제 사용하는가?
둘 다 메모이제이션과 연관된 개념으로 리액트에서는 리렌더링이 유발될 때 React.memo와 useMemo를 이용해 값이 기억하여 최적화한다.
React.memo
React.memo
는 고차컴포넌트(High Order Component
)이다.
Higher-Order Components(HOC)란 컴포넌트를 인자로 받아 새로운 컴포넌트롤 다시 return해주는 함수
컴포넌트를 React.memo로 씌워주면 부모 컴포넌트로 넘어온 props
가 변경되었는지 불변성 체크를 한다.(얕은 비교)
즉, 같은 props로는 리렌더링이 되지 않는다.
useMemo
useMemo
는 특정 비용이 많이 드는 연산 결과를 캐싱할 수 있다.
의존성의 변화에 따라 새로 연산되어 캐싱된다.