1) 컴포넌트의 state가 변경되었을 때
2) 컴포넌트가 상속받은 props가 변경되었을 때
3) 부모 컴포넌트가 리렌더링이 된 경우 자식 컴포넌트는 모두 리렌더링
useMemo
: 값이나 계산된 결과를 메모리제이션하고 싶을 때 (객체, 배열)
useCallback
: 함수를 기억하고 싶을 때
React.memo
: 컴포넌트를 메모리제이션하고 싶을 때
이러한 것들도 코드이고 내부적으로 로직들이 실행이 되기 비용이 생깁니다. 매번 바뀔 수 밖에 없는 props에 useMemo를 쓰던가, 매번 렌더링이 되는 컴포넌트에 useCallback을 하게 되면 오히려 성능이 저하될 수 있습니다.