Вопрос проверяет понимание мемоизации компонентов и оптимизации перерендеров в React.
React.memo — это механизм мемоизации функциональных компонентов.
Он предотвращает перерендер, если props компонента не изменились.
Сравнение происходит по ссылкам.
Это помогает снизить количество лишних вычислений при рендеринге.
По умолчанию React перерендеривает компонент каждый раз, когда перерендеривается его родитель.
React.memo — это HOC, который запоминает результат рендера компонента и повторно использует его, если входные props не изменились.
React:
сравнивает предыдущие и новые props
использует поверхностное сравнение
проверяет ссылки, а не содержимое объектов
const User = React.memo(function User({ name }) {
return <span>{name}</span>;
});
Можно передать свою функцию сравнения:
React.memo(Component, (prevProps, nextProps) => {
return prevProps.id === nextProps.id;
});
React.memo не помогаетОптимизация не сработает, если:
в props передаются новые объекты или функции
родитель создаёт значения на каждом рендере
React.memo полезен, если:
компонент часто перерендеривается
рендер дорогой
props редко меняются
React.memo снижает количество перерендеров за счёт мемоизации, но эффективен только при стабильных props.