Выбор ответа Junior memo, useMemo, useCallback спрашивают часто обновлено

useMemo против useCallback

Вопрос

Чем useCallback(fn, deps) отличается от useMemo?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: useCallback(fn, deps) это useMemo(() = fn, deps). useMemo кеширует результат вызова переданной функции, а useCallback кеширует саму функцию, то есть эквивалентен useMemo(() = fn, deps).

Варианты ответа

  1. useCallback вызывает fn и кеширует результат её вызова
  2. useCallback(fn, deps) это useMemo(() => fn, deps)правильный ответ
  3. useCallback работает в классах, а useMemo в функциях
  4. useCallback не принимает зависимости и кеширует навсегда

Разбор

useMemo кеширует результат вызова переданной функции, а useCallback кеширует саму функцию, то есть эквивалентен useMemo(() => fn, deps). Он не вызывает fn. Хуки в классах не работают вовсе. Зависимости у useCallback есть, и они обязательны по смыслу.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме