- 성능 최적화를 위해 메모이제이션(Memoization)을 목적으로 사용
- useMemo: 계산 비용이 높은 연산값을 저장
- useCallback: 함수 자체를 저장
- 특정 값이나 계산 결과를 메모이제이션
- 계산에 영향을 주는 dependencies가 변경되지 않으면 재연산을 진행하지 않고 이전에 계산한 값을 반환
- 불필요한 재계산 방지
- [사용 경험] 배열의 filter 값을 메모이제이션할 때 사용
- dependencies에 필터링 조건을 추가하여, 필터링 조건이 변할 때만 다시 실행되고 필터링 조건이 변하지 않으면 이전값 사용
- 함수를 메모이제이션
- 불필요한 함수 재생성 방지
- 함수의 dependencies가 변경되지 않으면 새로운 함수를 생성하지 않고 이전에 생성한 함수를 반환
- [사용 경험] custom hook에서 함수를 반환할 때 사용
- custom hook을 사용하는 컴포넌트의 상태가 변경되어 재렌더링될 때마다 hook이 다시 실행되면서 불필요하게 함수를 재생성하지 않도록 사용