Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Что такое мемоизация и как её использовать?

Этот вопрос проверяет понимание концепции мемоизации и её роли в оптимизации производительности в React.

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

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

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

Мемоизация — это метод оптимизации, который позволяет сохранять результаты вызовов функций и возвращать кэшированные результаты, если те же аргументы используются повторно. Это может значительно повысить производительность, особенно для функций с тяжелыми вычислениями или тех, которые возвращают новые объекты при каждом вызове.

В React мемоизация осуществляется с помощью хуков useMemo и useCallback:

  • useMemo: Этот хук используется для мемоизации вычисленных значений. Он принимает функцию и массив зависимостей, и будет пересчитывать значение только тогда, когда зависимости изменятся.

import React, { useMemo } from 'react'; 

function Component({ items }) {
  	const sortedItems = useMemo(() => {
      		return items.sort(); // Тяжелая операция  
  	}, [items]);  
  
  	return <ul>{sortedItems.map(item => <li key={item}>{item}</li>)}</ul>; 
}
  • 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>; 
}

Использование мемоизации помогает предотвратить ненужные перерисовки компонентов и улучшает отзывчивость интерфейса. Тем не менее, мемоизация требует ресурсов для хранения кэшированных значений, поэтому ее использование должно быть оправданным, особенно для простых и быстрых вычислений.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • React

    React

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

#memo

#optimization

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