Проверяет понимание механизмов мемоизации и контроля ререндеров в React для оптимизации производительности компонентов.
В React компонент перерендеривается при изменении его состояния, контекста или пропсов, переданных от родителя. Если компонент получает много пропсов, но реагирует только на часть из них, лишние ререндеры могут снижать производительность, особенно при сложных вычислениях или больших списках.
React.memo — это функция высшего порядка, которая мемоизирует компонент. По умолчанию она делает поверхностное сравнение пропсов (shallow compare) и пропускает ререндер, если все пропсы равны по ссылке. Однако, если вы хотите игнорировать изменения конкретных пропсов, передайте вторым аргументом функцию сравнения. Эта функция получает предыдущие и новые пропсы и должна вернуть true, если ререндер не нужен, и false, если нужен.
const MyComponent = React.memo(function MyComponent({ important, ignored }) {
console.log('Render');
return <div>{important}</div>;
}, (prevProps, nextProps) => {
// Игнорируем изменения ignored, сравниваем только important
return prevProps.important === nextProps.important;
});В этом примере компонент будет перерендериваться только при изменении пропса important. Изменения ignored не вызовут ререндер, так как функция сравнения возвращает true, когда important не изменился.
Этот подход полезен, когда компонент получает часто меняющиеся пропсы (например, колбэки или данные, которые не влияют на вывод) и редкие значимые пропсы. Например, в таблице с сортировкой можно игнорировать пропс с функцией сортировки, если она создается заново каждый рендер родителя, но важные данные остаются прежними.
Используйте React.memo с кастомной функцией сравнения, когда нужно точно контролировать, какие изменения пропсов должны вызывать ререндер. Это эффективный способ оптимизации производительности в React-приложениях, особенно при работе с большими деревьями компонентов.
Уровень
Рейтинг:
4
Сложность:
4
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию