useMemo는 (()=>{},[])처럼 사용하며 []안의 값이 변할때에만 {}안의 함수를 실행하는 것 이였다. 하지만 결과값으로 함수가 아닌 값을 반환한다. 그렇기 때문에 함수를 사용하고 싶은 경우에는 못썼는데 이럴 때 사용할 수 있는 것이 useCallback 이다. useCallback의 결과값은 함수이다.
함수를 useCallback으로 감싸준다. 만약에 변화하는 값이 useState의 setData 이런식으로 있다면 이렇게 써준다.
const hamsu = useCallback(()=>
{
setData((data)=>[newItemm, ...data]) // data를 항상 최신값으로 유지
},[])
이렇게 한다면 data의 값이 바뀔때에만 그 함수가 리렌더링된다.