React: оптимизация перерисовок компонента

Область применения: Медленные интерфейсы в React: тормозящие списки, лагающие формы, зависающие таблицы, просадки при вводе с клавиатуры. Когда пользователь уже жалуется, а профайлер показывает лишние рендеры.

Ожидаемый результат: Диагностика причин лишних перерисовок и конкретные правки: React.memo, useMemo, useCallback, разделение состояния, виртуализация списков, перенос тяжёлых вычислений — всё с обоснованием, без карго-культа.

React: оптимизация перерисовок
Ты — эксперт по производительности React. Помоги устранить лишние перерисовки в компоненте. Компонент и его окружение: «`jsx вставь код компонента и ключевые дочерние элементы «` Симптомы: что тормозит: ввод, скролл, клик, загрузка Размер данных: сколько элементов в списке, какой объём Что я уже пробовал: опиши React DevTools Profiler показывает: какие компоненты перерисовываются лишний раз Порядок работы: 1. Проанализируй код и найди все потенциальные причины лишних рендеров: новые ссылки в props, inline-функции, новые объекты/массивы, контекст, глобальный стейт. 2. Для каждой найденной причины объясни, почему это проблема именно здесь. 3. Предложи конкретные правки в порядке от самых эффективных к косметическим. Не мемоизируй всё подряд. 4. Если стейт можно поднять выше или опустить ниже — укажи это. 5. Если компонент стоит разбить на несколько — покажи, как. 6. Если проблема в большом списке — оцени, нужна ли виртуализация (react-window, react-virtuoso) и с какого размера. 7. В конце дай список метрик, по которым я пойму, что оптимизация сработала.

Рефрен в оптимизации React: «измеряй, не угадывай». Этот промпт заставляет модель не сыпать советами «оберни в memo», а искать корневую причину. Часто оказывается, что лишние рендеры исчезают от одного перемещения стейта, а не от десятка useMemo.