我目前正在使用 React Native 开发一个应用程序,我可以设法拥有登录和注册页面,但我的问题如下。
使用 firebase 方法使用电子邮件和密码创建用户后,我想更新个人资料信息(displayName)以便将其显示在主页中。
但似乎注册后页面重定向到主页而没有完成更新
我在导航器堆栈上设置了一个侦听器,以显示有关用户价值的登录/注册页面或主页。
如果我关闭应用程序并在第一次注册成功后重新加载它,则更新设置正确。
我的代码如下
主堆栈代码
function onAuthStateChange(user) {
setUser(user);
if (initializing) setInitializing(false);
}
useEffect(() => {
const subscriber = auth().onAuthStateChanged(onAuthStateChange);
return subscriber;
}, [];
if (initializing) {
return <LoadingScreen />
if (!user) {
return (
<NavigationCOntainer>
<AuthStackScreen />
</NavigationCOntainer>
);
}
return (
<NavigationCOntainer>
<DrawerStackScreen />
</NavigationCOntainer>
处理注册方法的代码:
function handgleRegister() {
auth()
.createUserWithEmailAndPassword(email, password)
.then(userCred => {
return userCred.user.updateProfile({
displayName: name,
});
})
.catch(e => {
...
...
});
}
在主页的代码中,我还设置了用户的监听器。
我也尝试过调用该方法:auth().currentUser;
但我遇到了同样的问题,第一次显示时的 displayName 设置为 null,我必须关闭并重新加载应用程序才能显示它。
function onAuthStateChange(user) {
console.log(user);
}
useEffect(() => {
const subscriber = auth().onAuthStateChanged(onAuthStateChange);
return subscriber;
}, [];
日志的结果显示 displayName 为 null,因此我假设注册过程在更新值之前重定向到主页。
有人知道我如何设法在主页屏幕上获取更新值吗?
提前致谢