Вопрос проверяет умение оптимизировать React-приложения и контролировать перерендеры компонентов.
Лишние перерендеры можно предотвратить с помощью мемоизации.
Чаще всего используют React.memo, useMemo и useCallback.
Важно также следить за тем, какие props передаются дочерним компонентам.
Оптимизация снижает нагрузку на рендеринг и повышает производительность.
По умолчанию React перерендеривает дочерние компоненты при каждом рендере родителя.
React считает, что:
при рендере родителя могли измениться props
компоненты являются чистыми функциями
повторный вызов безопасен
React.memoReact.memo позволяет:
запомнить результат рендера компонента
пропустить перерендер, если props не изменились
const Child = React.memo(function Child({ value }) {
return <span>{value}</span>;
});
Если родитель передаёт:
объекты
массивы
функции
их нужно мемоизировать:
const data = useMemo(() => ({ a: 1 }), []);
const handler = useCallback(() => {}, []);
Также помогает:
вынос логики в отдельные компоненты
уменьшение области обновлений
Не стоит оптимизировать:
простые компоненты
код без проблем производительности
Лишние перерендеры предотвращаются мемоизацией и аккуратной передачей props. Оптимизацию стоит применять осознанно.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию