intermediate

useMemo

Мемоизируйте дорогие производные значения, когда отслеживание dependencies дешевле пересчёта.

`useMemo` кэширует результат вычисления между render, пока зависимости не изменились. Применяйте, когда профилирование показывает повторную тяжёлую работу — фильтрацию тысяч строк, построение lookup-таблиц или стабилизацию ссылочной идентичности объекта для memoized-потомков.

Это не гарантия актуальности; зависимости должны быть корректными. Пустой или неверный массив зависимостей даёт баги устаревших данных хуже, чем отсутствие memo. Сам по себе `useMemo` не останавливает render потомков, если дальше по дереву нет выгоды от равенства ссылок.

На интервью объясняйте концепцию на конкретном примере и называйте поведение, которое проверяют.

Типовые ошибки: скрывать поток данных, дробить компоненты чрезмерно и выполнять побочные эффекты в render.

Компромисс часто между ясностью и переиспользованием или между явными props и удобством.

Чеклист:

  • Профилируйте до введения memo.
  • Держите массив зависимостей честным.
  • При низкой стоимости оставляйте вычисления в render.