hooks에서 최적화
useMemo(callback, [변경되는값]);
- 두번째 배열이 바뀌기전까지 값을 기억
- 함수 컴포넌트는 매번 함수가 새로 그려지며 실행되기 때문에 한번만 실행되면 되는 함수도 계속 호출되는 문제 발생
- 변경되는 값이 없다면 한번만 실행후 값을 보관하는 역할로 쓸 수 있다.
useRef()와 useMemo() 차이점
- useRef : 클래스로 치면 멤버변수 혹은 dom객체 처럼 특정한 '값'만 기억해야 할 때
- useMemo : 복잡한 함수의 'retur값'을 기억해야 할 때
useCallback(callback, [변경되는값]);
- 두번째 배열이 바뀌기전까지 함수 자체를 기억
- 함수 생성 자체가 오래걸리는 경우 쓰면 최적화에 도움됨
- 변경되는 값이 없다면 state 값을 맨처음 값만 기억(console로 확인)
- 변경되는 값이 있을때 새로운 값을 기억할 수 있다.
- 자식컴포넌트에 함수를 props로 내릴때는 useCallback을 반드시 사용(자식 리렌더링 방지)
useMemo()와 useCallback() 차이점
- useMemo : '함수 return 값'을 기억
- useCallback : '함수 reference'를 기억