После регистрации Firebase автоматически запускает логин, хотя я еще не сгенерировал данные приложения - PullRequest
0 голосов
/ 29 апреля 2020

В моем приложении после регистрации пользователя с помощью fireUbase signUpWithEmailAndPassword I go и сгенерировать некоторые пользовательские данные приложения и связать их с профилем пользователя.

В моем компоненте высокого порядка AuthContext Provider я использую firebase для наблюдателя .auth.onAuthStateChanged в useEffect () - Hook.

Этот onAuthStateChanged-наблюдатель запускается сразу после того, как пользователь зарегистрировал , но перед созданием пользовательских данных приложения. Это связано с тем, что firebase сразу же регистрируется у пользователя сразу после регистрации и автоматически. Таким образом, onAuthStateChanged предоставляет пользовательский объект приложению, и он начинает рендеринг, однако сгенерированные данные приложения еще не сохраняются в БД, поэтому происходит сбой.

Я уже хотя бы просто проверял внутри onAuthStateChanged-Observer, является ли Данные приложения уже доступны или нет, и если они недоступны, они просто не передадут пользователя в приложение, которое не начнет рендериться слишком рано. Однако в случае, если данные приложения еще не доступны, и, скажем, через несколько секунд после того, как они станут доступны, onAuthStateChanged больше не будет запускаться, поскольку состояние аутентификации не изменяется после завершения загрузки данных приложения.

I знаю, что я могу заставить перехватчик useEffect, удерживающий onAuthStateChanged Observer, перезапуститься после загрузки данных пользовательского приложения, добавив данные пользовательского приложения в качестве второго параметра. Тем не менее, AuthStateChanged не сработает, поскольку состояние пользователя такое же.

Я чувствую, что думаю обо всем этом ложно, и буду признателен за вашу помощь. Как реагировать на это?

.. очевидно, у меня есть асин c фон;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...