Я пытаюсь создать настраиваемую функцию перехвата, которая использует функцию useCallback
. Вот игрушечный пример:
export function useCustomLink(link: { url: string; description: string }) {
const [updating, setUpdating] = useState<boolean>(false);
const [linkInfo, setLinkInfo] = useState<{ url: string; description: string } | "loading" | "error">("loading");
useEffect(() => {
// initiate linkInfo
if (!updating) {
setLinkInfo(link);
}
}, [link]);
const updateLink = useCallback((update: Partial<{ url: string; description: string }>) => {
if (linkInfo !== 'loading' && linkInfo !== 'error') {
const updated = { ...linkInfo, ...update };
setLinkInfo(updated);
setUpdating(true);
}
}, [linkInfo, link]);
return {
linkInfo, updateLink
};
}
Насколько я понимаю, список зависимостей состоит в том, что мне нужно только добавить переменные, которые напрямую используются функцией (в данном случае linkInfo
). Однако, если я не добавлю link
(который передается в настраиваемую функцию перехвата) в список, то в итоге я получу устаревшие состояния linkInfo
. Может ли кто-нибудь помочь объяснить, почему мне нужно добавить переменную add'l в зависимости? Это правильный способ использования useCallback
?
Спасибо!