Как стать автором
Обновить

Комментарии 9

Мемоизировать крохотный O(1) алгоритм — это genius.jpg конечно

Ну это для текущего момента О(1). А для «исторических» запросов на построение трендов будет уже O(random) (ну там бэкенд отвалился, источник курсов валют тормозит) — тут уж помемоизировать неплохо, что-нибудь.

Текущая реализация работает на клиенте. Чтобы перенести запросы на сервер нужно писать отдельную обвязку и делать все асинхронным. useMemo тут преждевременная оптимизация в чистом виде.

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

useMemo в данном случае сыграет, если результат (объект) передадим в пропсы жирного дочернего мемо-компонента (или вообще в контекст запихнем), экономя рендеры оного, либо там будет вычисляться что-то реально жёсткое. А если мы тут же отрендерим значения в дивах, то смысла не было, разумеется.

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

Порой у меня возникает мысль, чтобы было бы здорово вынести useCallback/useMemo хуки в отдельный импорт "react/advanced-hooks-you-dont-need-it", чтобы у неокрепших умов не возникало желания импортировать их где не попадя

Интересная идея)

В той же реактовской доке написано, что не надо оптимизировать, если явно не тормозит

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории