Выбор ответа Junior memo, useMemo, useCallback спрашивают часто обновлено
Как memo сравнивает props
Вопрос
Как React.memo по умолчанию решает, что props не изменились?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Сравнивает каждый проп с прошлым через Object.is. По умолчанию memo делает поверхностное сравнение: каждый проп сравнивается через Object.is.
Варианты ответа
- Глубоко сравнивает все вложенные объекты
- Сравнивает каждый проп с прошлым через
Object.isправильный ответ - Сравнивает результат
JSON.stringify(props) - Сравнивает только примитивные props, объекты всегда считает изменёнными
Разбор
По умолчанию memo делает поверхностное сравнение: каждый проп сравнивается через Object.is. Глубокого сравнения и сериализации нет. Объект с той же ссылкой считается равным, так что «объекты всегда изменены» тоже неверно. Свою функцию сравнения можно передать вторым аргументом.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «memo, useMemo, useCallback»
- Перерендерится ли children
- React Compiler
- React.memo
- useCallback
- useMemo
- Таблица на 10 000 строк
- memo и children
- useMemo, useCallback, memo