Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在注册时存储用户名仅在页面刷新后显示(Firebase)_Javascript_Reactjs_Firebase_Firebase Authentication - Fatal编程技术网

Javascript 在注册时存储用户名仅在页面刷新后显示(Firebase)

Javascript 在注册时存储用户名仅在页面刷新后显示(Firebase),javascript,reactjs,firebase,firebase-authentication,Javascript,Reactjs,Firebase,Firebase Authentication,我是React和Firebase的新手,我整天都在努力解决这个小用户注册问题。希望有人能帮助我,我非常感谢这是我遇到的一个超级noob bug,但是我没有使用useEffect设置用户名,而是将我的setUserName状态传递给我的注册组件,并完全取消了useEffect。 这一切都解决了 const onSubmit=async(数据)=>{ 认证 .createUserWithEmailAndPassword(data.email,data.password) 。然后((结果)=>{ r

我是React和Firebase的新手,我整天都在努力解决这个小用户注册问题。希望有人能帮助我,我非常感谢这是我遇到的一个超级noob bug,但是我没有使用useEffect设置用户名,而是将我的setUserName状态传递给我的注册组件,并完全取消了useEffect。 这一切都解决了

const onSubmit=async(数据)=>{
认证
.createUserWithEmailAndPassword(data.email,data.password)
。然后((结果)=>{
result.user.updateProfile({
displayName:data.username,
});
//这就是我失去的状态。
setUserName(data.username);
setUserError(!userError);
window.localStorage.setItem('emailForSignIn',data.email);
setRedirect(true);

})
这是我遇到的一个超级noob错误,但我没有使用useEffect设置用户名,而是将我的setUserName状态传递给我的注册组件,并完全取消了useEffect。 这一切都解决了

const onSubmit=async(数据)=>{
认证
.createUserWithEmailAndPassword(data.email,data.password)
。然后((结果)=>{
result.user.updateProfile({
displayName:data.username,
});
//这就是我失去的状态。
setUserName(data.username);
setUserError(!userError);
window.localStorage.setItem('emailForSignIn',data.email);
setRedirect(true);

})
这是因为您传递给OnAuthStateState的函数在用户注销登录时运行。您需要在用户首次登录之前设置该侦听器,因此如果仅为已登录的用户呈现
,则为时已晚。请将设置侦听器移动到
组件。I t虽然这样可以,但我还是遇到了同样的错误。我发布了我的App.js,这样你就可以看到我是如何使用它的。非常感谢,那么console.log什么时候调用的,它说了什么?请注意,注销可能会导致当前代码出错,因为
用户
将是
空的
。对。当用户第一次注册。当用户注销时没有错误。很抱歉,我对所有这些都不了解。我只是想避免创建一个新状态来解决这个小错误。等等,注册与登录不同。该处理程序在用户登录/注销时运行。只是为了确保我们在同一页面上。有三种可能的状态:1)尚未注册,2)已注册但未登录,3)已登录。客户端无法明显区分1和2。这是因为您传递给onAuthStateChanged的函数在用户登录时运行。您需要在用户首次登录之前设置侦听器,因此如果de>仅为已登录的用户呈现,这太晚了。将侦听器设置到您的
组件。我认为这会起作用,但我仍然遇到相同的错误。我发布了我的App.js,以便您可以看到我是如何使用它的。非常感谢,那么何时调用console.log,它说了什么注销可能会导致您当前的代码出错,因为
user
将为
null
。对。当用户第一次注册时,它会显示null。当用户注销时没有错误。很抱歉,我对所有这些一无所知。我只是想避免创建一个新状态来解决这一个小错误。等等,注册是不同的nt登录。该处理程序在用户登录/注销时运行。只是为了确保我们在同一页面上。有三种可能的状态:1)尚未注册,2)正在注册但未登录,以及3)正在登录。客户端无法明显区分1和2。