Firebase响应太慢

时间:2020-09-26 09:59:25

标签: javascript reactjs firebase-realtime-database use-state

伙计们,我正在使用Firebase实时数据库为React.js Web应用程序获取一些数据。

有一个名为useState的{​​{1}},应该存储正确的用户名值。

我有一个Corr_User可以从Firebase获取用户名:-

function

当我执行 function Login(){ const path = firebase.database().ref("users").child(username); path.once("value") .then(snapShot => { setCorr_User(snapShot.child("username").val()); }) 时,它会打印一个空字符串,指示console.log(Corr_User)未更新。 为了进行确认,我还登录了useState。这样会打印适当的值。

由此我可以了解到,Firebase返回响应的速度太慢,因此我的snapshot.val()没有得到更新。我的理解正确吗?有什么办法让我的useState函数等待响应?

请帮助!!预先感谢。

编辑- 好吧,我猜有点混乱。代码像这样

Login()

据此,我能够猜测Firebase的响应速度太慢,并且 function Login(){ .... .once("value") .then(snapShot => { // After fetching the data setCorr_User(snapShot.child("username").val()); // Assigning the value console.log(snapShot.val()); // This should be logged first }) // End of function snapShot() // This is still inside Login() console.log(Corr_User) // But this is logged first } // End of Login() 仍为空,因此useState的更新没有得到相应的响应。

1 个答案:

答案 0 :(得分:2)

从Firebase异步加载数据,并且在数据可用时调用then。实际上,这意味着您的console.log(Corr_User)console.log(snapShot.val())之前被调用。因此,任何需要数据库中数据的代码都必须在then回调内部,或从那里调用。

对于刚接触异步API的开发人员来说,这是一个难以置信的绊脚石,因此,我建议研究以下一些链接: