> Как избежать лишних перерендеров компонентов в React (React)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Иннотех, Т-Банк, Kvando Technologies, Soft_Media_Group, ООО Премиум ИТ Солюшен, Sminex, Kodix, Домклик, Centicore, IT-One, Swetec, Софт Медиа Групп, DigitalSail, Exness, Сбер, Исходный Код, HolyWeb, SmartWay

Стек: React

> Пример ответа

Для предотвращения лишних перерендеров в React применяются следующие техники:

  1. React.memo - оборачивает функциональный компонент, сравнивая пропсы поверхностно (shallow comparison). Если пропсы не изменились, компонент не перерендеривается:

    JSX
    const MyComponent = React.memo(({ data }) => <div>{data}</div>);
  2. useMemo - мемоизирует результат вычислений, пересчитывая его только при изменении зависимостей:

    JSX
    const expensiveValue = useMemo(() => computeExpensive(a, b), [a, b]);
  3. useCallback - мемоизирует функцию, предотвращая создание нового экземпляра при каждом рендере:

    JSX
    const handleClick = useCallback(() => doSomething(id), [id]);
  4. Избегайте передачи объектов/массивов в пропсы без мемоизации - каждый рендер создаёт новые ссылки, что ломает React.memo. Используйте useMemo для стабильных ссылок.

  5. Правильное использование ключей (keys) - при рендере списков уникальные ключи помогают React минимизировать перерендеры элементов.

  6. Вынос состояния вниз - если часть компонента не зависит от изменяемых данных, вынесите её в отдельный мемоизированный компонент.

  7. Избегайте анонимных функций/объектов в JSX - они создаются заново каждый рендер. Выносите их в переменные или используйте useCallback.

  8. React.lazy и Suspense - для ленивой загрузки компонентов, которые не нужны сразу.

Важно: не мемоизируйте всё подряд - профилируйте приложение (React DevTools Profiler) и применяйте оптимизации только там, где есть реальные проблемы с производительностью.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью