Задать вопрос
Dasihub
@Dasihub

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

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

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽
от 250 000 до 300 000 ₽