Вопрос проверяет знание инструментов и методов профилирования производительности React для выявления и устранения избыточных ре-рендеров.
Основной инструмент — React DevTools Profiler. Он записывает сессию взаимодействия с приложением и показывает, какие компоненты перерисовывались, сколько времени это заняло и какие пропсы или состояние изменились. Это позволяет быстро найти проблемные места.
import React, { useState, useMemo } from 'react';
const ExpensiveComponent = React.memo(({ data }) => {
console.log('Render ExpensiveComponent');
return <div>{data}</div>;
});
function App() {
const [count, setCount] = useState(0);
const [text, setText] = useState('');
// Мемоизация, чтобы ссылка не менялась при изменении count
const memoizedData = useMemo(() => text.toUpperCase(), [text]);
return (
<div>
<button onClick={() => setCount(c => c + 1)}>{count}</button>
<input value={text} onChange={e => setText(e.target.value)} />
<ExpensiveComponent data={memoizedData} />
</div>
);
}В этом примере ExpensiveComponent перерисовывается только при изменении text, а не при каждом клике на кнопку, благодаря React.memo и useMemo.
Используйте React DevTools Profiler для первичного анализа, а затем применяйте мемоизацию и оптимизацию структуры компонентов. Это особенно полезно в больших приложениях с частыми обновлениями данных, чтобы избежать падения производительности.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию