Выбор ответа Junior memo, useMemo, useCallback спрашивают часто обновлено

Как memo сравнивает props

Вопрос

Как React.memo по умолчанию решает, что props не изменились?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Сравнивает каждый проп с прошлым через Object.is. По умолчанию memo делает поверхностное сравнение: каждый проп сравнивается через Object.is.

Варианты ответа

  1. Глубоко сравнивает все вложенные объекты
  2. Сравнивает каждый проп с прошлым через Object.isправильный ответ
  3. Сравнивает результат JSON.stringify(props)
  4. Сравнивает только примитивные props, объекты всегда считает изменёнными

Разбор

По умолчанию memo делает поверхностное сравнение: каждый проп сравнивается через Object.is. Глубокого сравнения и сериализации нет. Объект с той же ссылкой считается равным, так что «объекты всегда изменены» тоже неверно. Свою функцию сравнения можно передать вторым аргументом.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме