Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про React: React.memo, areEqual, props comparison, memoization, performance

Что React.memo принимает вторым аргументом?

Проверяет знание необязательного второго аргумента React.memo — функции сравнения пропсов для оптимизации ререндеров.

Короткий ответ

React.memo принимает вторым необязательным аргументом функцию сравнения (areEqual). Она получает предыдущие и новые пропсы и должна вернуть true, если пропсы равны (ререндер не нужен), и false, если разные (нужен ререндер). По умолчанию используется поверхностное сравнение.

Длинный ответ

Что такое React.memo и зачем нужен второй аргумент?

React.memo — это компонент высшего порядка (HOC), который мемоизирует функциональный компонент. Он предотвращает повторный рендеринг, если пропсы не изменились. По умолчанию React.memo использует поверхностное сравнение пропсов (shallow comparison). Однако в некоторых случаях требуется кастомная логика сравнения — для этого и существует второй аргумент.

Второй аргумент: функция areEqual

Второй аргумент — это функция, которая принимает два параметра: prevProps и nextProps. Она должна вернуть true, если пропсы считаются равными (ререндер не нужен), и false, если они разные (нужен ререндер). Если функция не передана, React.memo использует стандартное поверхностное сравнение.

const MyComponent = React.memo(
  (props) => <div>{props.value}</div>,
  (prevProps, nextProps) => {
    // Кастомная логика сравнения
    return prevProps.value === nextProps.value;
  }
);

Когда это полезно?

  • Когда пропсы содержат объекты или массивы, которые создаются заново при каждом рендере родителя, но их содержимое не меняется.
  • Когда нужно игнорировать изменения определённых пропсов.
  • Для оптимизации производительности в компонентах с тяжёлыми вычислениями.

Важные замечания

  • Функция сравнения вызывается только при изменении пропсов. Если компонент ререндерится по другой причине (например, из-за изменения состояния), мемоизация не применяется.
  • Не стоит злоупотреблять кастомным сравнением — оно само по себе может быть дорогим.
  • Если функция сравнения возвращает false слишком часто, мемоизация теряет смысл.

Вывод: Второй аргумент React.memo — это функция areEqual для точного контроля над тем, когда компонент должен ререндериться. Используйте её, когда поверхностного сравнения недостаточно, например, при работе с вложенными объектами или массивами, чтобы избежать лишних ререндеров и улучшить производительность.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • React

    React

Ключевые слова

#React.memo

#areEqual

#props comparison

#memoization

#performance

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию