Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: memo, optimization

Как предотвратить ненужные рендеры компонентов?

Этот вопрос проверяет знание методов и техник, которые помогают уменьшить количество ненужных рендеров в React-приложениях.

Короткий ответ

Чтобы предотвратить ненужные рендеры компонентов в React, вы можете использовать такие методы, как мемоизация компонентов с помощью React.memo, оптимизация функций с помощью хуков useCallback и useMemo, а также применение shouldComponentUpdate или PureComponent для классовых компонентов. Также стоит избегать передачи новых объектов и функций в качестве пропсов, так как это может вызывать перерисовки дочерних компонентов.

Длинный ответ

Предотвращение ненужных рендеров компонентов в React — это ключ к созданию производительных и отзывчивых приложений. Основные техники, которые помогут вам в этом:

  • Использование React.memo: Этот метод позволяет мемоизировать функциональные компоненты, что предотвращает их повторный рендеринг, если пропсы не изменились.

import React from 'react'; 

const MyComponent = React.memo(({ title }) => {
 	 console.log('Рендеринг MyComponent');  
  	 return <h1>{title}</h1>; 
});
  • Оптимизация функций с помощью хуков: Хуки useCallback и useMemo позволяют вам мемоизировать функции и значения, чтобы избежать ненужных перерисовок.

import React, { useState, useCallback } from 'react'; 

function ParentComponent() {
   	const [count, setCount] = useState(0);  
   
   	const increment = useCallback(() => {
       		setCount(c => c + 1);  
   	}, []);  
   
   	return <button onClick={increment}>Увеличить: {count}</button>; 
}
  • Использование shouldComponentUpdate и PureComponent: В классовых компонентах можно использовать метод shouldComponentUpdate, чтобы контролировать, когда компонент должен перерисовываться. Также можно наследовать от PureComponent, который автоматически выполняет поверхностное сравнение пропсов и состояния.

  • Избегайте передачи новых объектов и функций: Если вы передаете новые объекты или функции в качестве пропсов, это приведет к их перерисовке. Старайтесь использовать мемоизацию или определять функции вне рендера.

  • Разделение компонентов: Разделите ваши компоненты на более мелкие, если это возможно. Это позволит React лучше управлять процессом рендеринга и не перерисовывать всю иерархию компонентов, если это не требуется.

 Соблюдение этих практик поможет вам значительно улучшить производительность ваших приложений и сделать их более отзывчивыми для пользователей.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • React

    React

Ключевые слова

#memo

#optimization

Подпишись на React Developer в телеграм