Задать вопрос

Как избежать использования чрезмерного использования useMemo?

В документации указано следующее:

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

Звучит хорошо, не правда ли? Но чтобы оптимизировать производительность, нужно быть уверенным, что расчеты стоят дороже, чем использование самого Memo перед его использованием. Есть ли предложения, когда следует избегать использования Memo?
  • Вопрос задан
  • 164 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Merion Academy
    Frontend-разработка на React
    4 месяца
    Далее
  • ProductStar
    React: отточите навыки интерфейсной разработки
    6 недель
    Далее
Решения вопроса 2
rockon404
@rockon404 Куратор тега React
Frontend Developer
useMemo использует поверхностное сравнение зависимостей, так же, каждый render определяется функция колбек, если она прописана в теле компонента.

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

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

Видел примеры кода, когда useMemo использовали и для создания контекста и для обновления состояния. Так делать не следует, так как может произойти потеря созданного таким способом контекста или сброс состояния.
Ответ написан
Комментировать
Robur
@Robur
Знаю больше чем это необходимо
Есть ли предложения, когда следует избегать использования Memo?

накладные расходы на useMemo - сравнение двух массивов + вызов функции.

Если то что вы положили в useMemo сложнее этой операции - оно уже даст какой-то выигрыш.
Думаю сделать такую оценку каких-то трудов не составит.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
от 250 000 до 300 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽