Вопрос проверяет понимание алгоритма сравнения в React.memo.
React.memo сравнивает пропсы попарно (prevProps ↔ nextProps) через Object.is. Если все пропсы равны — перерендера нет.
Алгоритм React.memo:
Получает предыдущие (prevProps) и новые (nextProps) пропсы.
Сравнивает каждый ключ через Object.is:
Для примитивов: по значению.
Для объектов: по ссылке.
Пример:
const props1 = { count: 5, data: { id: 1 } };
const props2 = { count: 5, data: { id: 1 } };
// Поверхностное сравнение:
props1.count === props2.count // true
props1.data === props2.data // false (разные ссылки)Кастомизация сравнения:
Можно передать свою функцию:
React.memo(Component, (prevProps, nextProps) => {
return prevProps.id === nextProps.id; // Перерендер только если изменился id
});Вывод:React.memo по умолчанию делает поверхностное сравнение, что быстро, но не глубже 1 уровня.