Usecase for useMemo hook - PullRequest
       27

Usecase for useMemo hook

1 голос
/ 29 марта 2019

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

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

Я посмотрел на memoized ссылка они предоставляют, и я понял, что вы можете думать об этом как о кеше.

Я не специалист по компьютерным наукам, но я знаю, что запоминание - это хорошая оптимизация для вычисления fibonacci

Я все еще пытаюсь лучше понять, почему икак использовать useMemo, но некоторые вещи все еще неясны для меня.

  • Что считается expensive calculations?
  • Может ли кто-нибудь привести реальные react примеры?
  • В каких случаях useMemo подходит для оптимизации производительности?

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Прежде всего вы должны знать, что вы можете запоминать только чистые функции, то есть функции, вывод которых зависит исключительно от их аргументов.

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

  • В случае использования мемоизации может использоваться React, когда вы пытаетесь отфильтровать данные из большого массива.

  • В другом случае вы хотите преобразовать вложенный объект, основанный на некоторых параметрах, в другой объект или массив.

В таком случае useMemo действительно полезен. Если массив и критерии фильтрации остаются неизменными при повторном рендеринге, вычисление не выполняется снова, вместо этого ранее вычисленные данные возвращаются из кэша

1 голос
/ 29 марта 2019

Memoization - это процесс сохранения вычисленного значения, поэтому вам не нужно пересчитывать его снова.
На самом деле наиболее распространенными являются значения, полученные из хранилища редуксов (для которого существует перевыбрать ) или полного запоминания функциональных компонентов.
Не существует золотого правила, чтобы решить, дорогая ли функция и должна ли ее запоминаться, так как она сильно зависит от вашего конкретного случая использования и ошибок, связанных с производительностью, но обычно она сохраняется для фильтрации / сортировки массивов или тому подобного.
Лучший способ узнать, что следует запомнить, а что нет, - профилировать приложение, посмотреть, какие вычисления потребляют больше всего ресурсов, и запомнить их, чтобы понять, имеет ли это значение.

...