useMemo() : 함수의 리턴값을 기억함 (두번째 인자가 바뀌기 전까지)
useCallback() : 함수 자체를 기억함 (두번째 인자가 바뀌기 전까지)
useEffect() : 함수를 실행함 (두번째 인자가 바뀔 때)
자식 컴포넌트에 props로 함수를 넘길 때는 넘기는 함수 자체에 useCallback 꼭 써줘야 함. 그렇지 않으면 자식 컴포넌트는 매번 새로운 props를 주는걸로 인식해서 매번 리렌더링을 하기 때문이다.
조건문 안에 Hooks 넣으면 절대 안 된다. useState는 항상 최상위에 놓자.
Hooks의 함수들이 뭘 하는지 조금은 감이 온다. 근데 이걸 실제로 어디에 적용시키느냐가 관건일듯 ㅠㅠ