Необходимость добавления дополнительных зависимостей для реакции список зависимостей useCallback - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь создать настраиваемую функцию перехвата, которая использует функцию 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?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...