Ответ
useMemo — это хук React, который мемоизирует вычисления, чтобы избежать повторных вычислений при каждом рендере. Он принимает функцию и массив зависимостей, и возвращает мемоизированное значение, которое обновляется только при изменении зависимостей.
Пример:
import React, { useMemo } from 'react';
const ExpensiveComponent = ({ a, b }) => {
const result = useMemo(() => {
console.log('Вычисляется...');
return a * b;
}, [a, b]); // Пересчитывается только при изменении a или b
return <div>{result}</div>;
};
Когда использовать:
- Тяжёлые вычисления
- Оптимизация производительности
- Избежание лишних рендеров дочерних компонентов
Не злоупотребляйте useMemo для простых операций, так как он тоже потребляет ресурсы.
Ответ 18+ 🔞
Эй, слушай сюда, про этот ваш useMemo! Это ж как волшебная таблетка от долбанутых пересчётов в Реакте. Представь: у тебя компонент каждый раз пиздит как сумасшедший, пересчитывая одно и то же, а ты сидишь и думаешь — «нахуя?».
Вот useMemo тебе и говорит: «Чувак, расслабься, я запомню». Кидаешь ему функцию, которая делает тяжёлую работу, и массив зависимостей — что-то вроде списка «наблюдай за этим, а на остальное забей». И он возвращает тебе мемоизированное значение, которое обновится только если что-то в этом списке ёбнулось.
Смотри, как это выглядит в деле:
import React, { useMemo } from 'react';
const ExpensiveComponent = ({ a, b }) => {
const result = useMemo(() => {
console.log('Щас мозги сломаю... вычисляю!');
return a * b; // Какая-то ебанутая математика
}, [a, b]); // Пересчитает только если 'a' или 'b' изменились, а не от каждого чиха
return <div>{result}</div>;
};
Когда его впихивать, чтобы не выглядеть идиотом:
- Тяжёлые вычисления, от которых комп начинает потеть и вентилятор орать как сучка.
- Оптимизация производительности, когда рендеры летят чаще, чем мухи на говно.
- Чтобы дочерние компоненты не дёргались просто так, из-за того что родитель чихнул.
Но смотри, не будь мудаком — не юзай useMemo для всякой хуйни вроде сложения 2+2. Он сам по себе тоже жрёт ресурсы, это тебе не конфетка бесплатная. Используй с умом, а то будет как с тем Герасимом — сделаешь максималистскую хуйню и потом будешь метаться.