На большинстве платформ Firebase Authentication SDK уже автоматически сохраняет учетные данные пользователя в локальном хранилище и перезагружает их оттуда при перезапуске приложения / перезагрузке страницы. Причина, по которой вы по-прежнему видите задержку при перезагрузке страницы до запуска onAuthStateChanged
, заключается в том, что клиент проверяет сервер, чтобы убедиться, что учетные данные (все еще) действительны.
Простой обходной путь, позволяющий действовать Сразу после загрузки страницы , в то время как Firebase проверяет учетные данные, - это сохранить значение о последнем известном состоянии аутентификации в локальном хранилище самостоятельно и использовать его для определения вашего начального действия. По сути, это то, что вы делаете с объектом user
в вашем вопросе.
В этом нет ничего плохого, если вы понимаете, что при первом запуске onAuthStateChanged
данные могут будет отличаться от того, что вы сохранили. Обычно это не так, но может , и именно поэтому Firebase должна проверять учетные данные для начала.
Также см. Мой ответ на этот связанный вчера вопрос: Firebase auth.currentUser имеет значение null при загрузке страницы, пользователь загружается при вызове authstatechange после нескольких миллисекунд загрузки страницы