콜백 함수의 참조를 메모이제이션 하고 최적화 할 때 사용 콜백 함수를 자식 컴포넌트에게 전달하거나 다른 훅의 의존성 목록으로 지정할 때 유용
const memoizedCallback = useCallback(callback, dependencies);callback: 메모이제이션 대상이 되는 함수, 인라인 함수 또는 참조(변수)dependencies: 메모이제이션 하려는 콜백함수의 의존성 배열
예시: 에디터 컴포넌트에서 사용자가 글자를 입력할 때마다 본문에 업데이트가 생김. 이는 리렌더링 발생. 리렌더링할 때마다 새로운 함수가 생성되어 성능 저하
const ArticleEditor = ({ id }: { id: string }) => {
const submitChange = useCallback(
async (summary: string) => {
try {
await fetch(`/api/articles/${id}`, {
method: "POST",
body: JSON.stringify({ id, summary }),
headers: {
"Content-Type": "application/json",
},
});
} catch (error) {
// handling errors
}
},
[id]
);
return (
<div>
<ArticleForm onSubmit={submitChange} />
</div>
)
}