Вопрос проверяет понимание механизмов оптимизации ре-рендеров в React и умение предотвращать ненужные обновления дочерних компонентов.
В React при изменении состояния или пропсов родительского компонента все его дочерние компоненты по умолчанию перерендериваются. Это может привести к избыточным вычислениям и снижению производительности, особенно если дочерний компонент тяжёлый или их много.
import React, { useState, useCallback, memo } from 'react';
const Child = memo(({ onClick }) => {
console.log('Child render');
return <button onClick={onClick}>Click</button>;
});
function Parent() {
const [count, setCount] = useState(0);
const handleClick = useCallback(() => {
console.log('clicked');
}, []);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(c => c + 1)}>Increment</button>
<Child onClick={handleClick} />
</div>
);
}В примере Child обёрнут в React.memo, а handleClick мемоизирован через useCallback. При изменении count родитель перерендеривается, но Child не рендерится заново, так как пропс onClick остался тем же.
Применяйте React.memo для компонентов, которые часто получают одни и те же пропсы, а useCallback/useMemo — для стабилизации ссылок на функции и объекты. Это особенно полезно в списках, формах и компонентах с тяжёлой отрисовкой.
Уровень
Рейтинг:
5
Сложность:
5
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию