기존의 useMemo가 값을 저장하는 hook이라면 useCallBack은 특정 함수를 저장하는hook이다.

function App() {
    const [number, setNumber] = useState(0);
    const [toggle, setToggle] = useState(false);

    const printNumber = () => {
        console.log('current number: ',  number);       
    }

    useEffect(() => {
            console.log('printNumber 값 변화 인지됨');
    },[printNumber]);

    return (
        <>
            <input
              type="number"
              value={number}
              onChange={e => setNumber(e.target.value)}
            />
            <button onClick={() => setToggle(!toggle)}>{String(toggle)}</button>  
            <button onClick={printNumber}>PrintNumberState</button>
        </>
    );
}

해당 예시에서 첫 번째 버튼을 누를 때는 useEffect가 실행이 되고 두 번째 버튼을 눌렀을 때는 useEffect가 실행이 안됨

함수의 memorization

const printNumber = useCallback(
    () => {
        console.log('current number: ',  number);       
    },
    [number]   
);

→ useMemo와 사용법 또한 비슷하다.