Вопрос проверяет понимание признаков неоптимальной работы React-компонента и необходимости его оптимизации.
Основной сигнал — заметное замедление интерфейса при взаимодействии пользователя. Компонент может перерисовываться слишком часто, даже когда его пропсы и состояние не меняются. Это особенно критично для больших списков, сложных форм или анимаций.
console.log в теле компонента — простой способ увидеть частоту вызовов.function ExpensiveList({ items }) {
console.log('ExpensiveList rendered');
return items.map(item => {item.name});
}
function App() {
const [count, setCount] = useState(0);
const items = useMemo(() => [{ id: 1, name: 'A' }], []);
return (
<>
setCount(c => c + 1)}>Click
);
}В этом примере ExpensiveList будет перерисовываться при каждом клике, хотя items не меняется. Использование React.memo предотвратит лишние ререндеры.
Оптимизация оправдана, когда профилирование показывает реальные проблемы производительности. Не стоит оптимизировать заранее — сначала измерьте, затем применяйте React.memo, useMemo или useCallback только для узких мест.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию