Dasihub
@Dasihub

В чём отличие хука useMemo от useCallback в React?

Привет всем, я являюсь новичком. На данный момент изучаю фрейворк React js. Я начал понимать хуков, таких как usеState, useEffect, но я не могу понять в чём отличие хуков useMemo и useCallback. И зачем они нужны?
  • Вопрос задан
  • 224 просмотра
Решения вопроса 2
Alexandroppolus
@Alexandroppolus
кодир
Отличий два
1) useCallback(func, deps) - ни что иное как useMemo(() => func, deps)
То есть useCallback возвращает функцию, а useMemo выполняет функцию и возвращает результат (в обоих случаях - при условии что депсы поменялись).
2) про useMemo в документации есть предостережение, что Реакт не гарантирует сохранность результата и может вычислить ещё раз, даже при неизменных депсах. Про useCallback такого не сказано.
Ответ написан
Комментировать
@JS_Noob
Пишу плохой код профессионально
Оба хука нужны для того, чтобы при передаче возвращаемых ими данных в качестве пропсов в компонент-потомок, этот компонент-потомок не совершал лишние перерендеры.
То есть хук useCallback при одинаковых зависимостях создаст ссылку на функцию один раз. При передаче в компонент-потомок, этот компонент-потомок проверит что ссылка не поменялась и не будет делать лишний ререндер.
Хук useMemo нужен для того же, но если useCallback возвращает функцию, то useMemo возвращает какие-то данные. И как писали ранее, useMemo не гарантирует, что ссылка на данные не изменится даже при одинаковых зависимостях.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы