@Boris007

Для чего мемоизируют аутентификацию?

В документации реакта useMemo описывается, как хук, который нужно использовать при сложных вычислениях
Как я понял, если нам нужно работать с алгоритмом минимум O(N^2) или если цикл обрабатывает десятки тысяч итераций.
В той же документации пишут, что не надо использовать этот хук везде, как фиксацию каких-то данных, которые имеют хоть какие-либо вычисления

В примерах и статьях заметил, что useMemo активно используют для аутентификации, но зачем?
Ведь там нет никаких сложных вычислений
Пример с обучающего сайта (да и в других примерах когда тоже useMemo в Auth суют)
https://reactnavigation.org/docs/auth-flow/#implem...

Как по мне, useMemo должен встречаться в коде очень редко, но почему-то это частый хук
Поправьте меня, если я в чем-то не прав
В каких случаях, кроме сложных алгоритмических вычислений, useMemo нужен?
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 1
Aetae
@Aetae
Тлен
На самом деле useMemo нужен, чтобы при передаче значения как prop в низлежащий memo компонент не происходила перерисовка оного если не было изменений(+при передаче как зависимость в другой хук, тот не срабатывал заново).
Стоит упустить хотя-бы одно место требующее useMemo и пойдёт водопадом перерисовка на каждый чих каждого компонента по всему дереву вниз. И именно это является основной причиной тормозов в React, а не какие-то там мифические сложные вычисления.

Официальная позиция React: "говнокодь сейчас, оптимизируй потом", действительно предполагает использование useMemo "только в узких местах" и нигде больше. Прикол в том, что с таким подходом при разрастании проекта никакого "узкого места" просто нет, тормозить начинает просто потому, что складываются тысячи микротормозов от тысяч перерисовок тысяч компонентов: наступает то самое "потом" и тут придётся переписывать с useMemo чуть ли не весь проект, чтоб снизить эти тормоза.
Именно по этому в реальной работе useMemo стараются таки использовать заранее в каждом месте, где оно потенциально нужно. Некоторые радикальные философии вообще предполагают использование useMemo просто всегда, без исключений.:)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы