Hook은 React 16.8에 새로 추가된 기능입니다. Hook은 class를 작성하지 않고도 state와 다른 React의 기능들을 사용할 수 있게 해줍니다.
Hook
이라는 개념을 도입하게 되었다.저장된return값을 사용하는 hook
//value값이 변할 때만 호출(memoization)
const result = useMemo(() => testfunc(value), [value]);
useMemo와 마찬가지로 랜더링 최적화를 위한 Hook
함수의 재사용을 위해 사용하는 Hook
선언된 함수를 각각 다른 변수에 할당을 하면 해당 변수들이 가리키는 주소값은 다르다. 같은 함수가 2개 선언 되어있으므로 메모리적으로 낭비일 뿐더라 해당함수가 처리되는데 오래걸린다면 그만큼 UX는 좋지 못할것이다.
- 리랜더링되면 기존에 선언되어있는 함수는 리랜더링되었을 때 선언된 함수와 다른 함수가 된다. (주소값이 다름.)
따라서 랜더링시 해당 함수를 props로 전달해주고 해당 컴포넌트에서 useEffect안에 콜백함수로 사용한다면 랜더링할때 마다
실행될것이다.- useCallback을 이용하면 memoization을 사용하기 때문에 새로 선언하는게 아니고
기존에 있던 함수의 주소값을 가져와서 할당하는것과 같으므로 useEffect는
이함수가 새로운 함수라고 판단하지 않아서 실행되지 않는다.