Полноценное руководство по оптимизации производительности: когда, зачем и как переиспользовать результаты вычислений и ссылок.
Мемоизация — это сохранение результата выполнения функции для предотвращения повторных вычислений при тех же входных параметрах.
Цель: Сохранение ссылочной стабильности и кеширование тяжелых вычислений для минимизации лишних ререндеров.
Мемоизация результата вычислений. Используется для тяжелых вычислений или формирования стабильных ссылок на объекты/массивы.
1const value = useMemo(() => compute(a, b), [a, b]);Мемоизация ссылки на функцию. Необходим при передаче функций в memo-компоненты или в зависимости других хуков.
1const handler = useCallback(() => { ... }, [dep]);Предотвращение ререндеров компонента. Оборачивает компонент для поверхностного сравнения пропсов.
1export const MyComp = memo(({ props }) => { ... });Передача стабильных ссылок (функции, объекты) в дочерние memo-компоненты.
Стабилизация зависимостей для useEffect, useMemo и других хуков.
Кеширование результатов фильтрации, сортировки или сложных трансформаций данных.
Мемоизация — это не бесплатно. Она потребляет дополнительную память и ресурсы CPU на сравнение зависимостей.