从firebase进行身份验证后,数据无法在控制台中显示



我正在构建一个react应用程序,在其中我使用firebase进行身份验证。代码如下:

function signIn(){
firebase.auth().signInWithPopup(provider).then(function(result)=>{
console.log(result.user);
setUserInfo(result.user);
console.log(userInfo);
}).catch(function(error)=>{
console.log(error.message);
});
}
const [userInfo, setUserInfo] = useState({});

现在,当控制台日志记录结果为.user时,数据是完美的。但是,当我将它分配给userInfo并控制台记录它时,它会返回一个空对象,其中包含类似于的内容

{proto}

useState钩子的setter的调用是异步的,因此不能在调用setUserInfo之后直接记录状态变量。

如果您想获得更新状态,可以使用useEffect挂钩。但在你目前的then()听众中,我建议你坚持使用result.user

另请参阅:

  • useState是同步的吗
  • useState集方法没有立即反映更改

相关内容

最新更新