기존의 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가 실행이 안됨
const printNumber = useCallback(
() => {
console.log('current number: ', number);
},
[number]
);
→ useMemo와 사용법 또한 비슷하다.