state 즉, 상태를 변경하는데 사용됩니다.
Side Effect를 다루기 위해 사용됩니다,
Side Effect란? 함수 내의 구현이 함수 외부에 영향을 끼치는 경우
페이지가 처음 렌더링이 완료된 후
새로운 props를 전달받았거나, 특정 state값이 변경되었을 때
컴포넌트가 제거될 때는 clean-up 함수를 반환하여 정리하는 리소스를 만들 수 있음
메모리제이션된 함수를 반환한다, 함수 내 연산이 복잡할 경우 사용하면 최적화에 도움됩니다
메모리제이션된 값을 반환하며, 의존성 배열에 값이 변경될 때만 메모리제이션 값을 다시 변경
useCallback은 memoization 된 콜백(함수) 자체를 반환하고
의존성이 변경되는 경우, 이전에 기억하고 있던 함수 자체와 비교해서 다른 경우에만 리랜더 된다
useMemo는 memoization 된 값을 반환
의존성이 변경되는 경우, 이전에 기억하고 있던 리턴 값과 비교해서 다른 경우에만 리랜더
useRef와의 차이는, useRef는 DOM element의 특정 속성 값을 기억한다면, useMemo는 특정 함수의 리턴 값을 기억한다