У меня возникли проблемы со следующим случаем:
Я использую функцию входа в систему электронной почты в Firebase Auth. Все отлично работает Однако, как часть формы регистрации, есть поле имени пользователя. Когда форма отправляется, выполняется следующее действие:
const response = await auth.createUserWithEmailAndPassword(email, password);
await response.user?.updateProfile({
displayName: name
});
Это корректно обновляет профиль пользователя с отображаемым именем. Проблема в том, что сразу после завершения createUserWithEmailAndPassword
запускается onAuthStateChanged
, и это единственное место, где пользователь контролируется в локальном состоянии приложения. Однако после выполнения обратного вызова отображаемое имя все еще не известно, и это приводит к тому, что первый рендер приложения после регистрации не узнает имя пользователя. Если страница обновится, появится имя, так как оно теперь сохраняется.
Я мог бы сохранять пользовательские данные в состоянии самостоятельно, но это теряет некоторые преимущества использования автоматической подписки c.
Кто-нибудь из вас решил, что эта проблема лучше?
Спасибо!
Редактировать: Я также нашел метод в auth, который называется updateCurrentUser
и я попытался позвонить после завершения обновления профиля. Это, однако, не вызывает onAuthStateChanged
, как указано в документации.