Javascript useEffect获取firebase数据

Javascript useEffect获取firebase数据,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我正在尝试从firebase获取我的用户名。 console.log显示正确的用户名。但我如何访问useEffect内部的uName以在我的tet组件中显示它呢 useEffect(async () => { var username = await firebase .database() .ref("users/" + authUser + "/name") .once("value") .then(function(snap

我正在尝试从firebase获取我的用户名。 console.log显示正确的用户名。但我如何访问useEffect内部的uName以在我的tet组件中显示它呢

  useEffect(async () => {
    var username = await firebase
      .database()
      .ref("users/" + authUser + "/name")
      .once("value")
      .then(function(snapshot) {
        return snapshot;
      });
    var slicedName = JSON.stringify(username);
    var uName = slicedName.slice(1, -1);
    console.log("USERNAMELOG", uName);
  }, []);

useffect
hook不允许将
async/await
函数用作主处理程序。您可以将其作为单独的函数,并在钩子中执行:

异步函数getData(authUser){ 返回火基 .数据库() .ref('users/'+authUser+'/name')) .once('值') } useffect(()=>{ getData(authUser) 。然后(用户名=>{ const slicedName=JSON.stringify(用户名) const uName=slicedName.slice(1,-1) console.log(“USERNAMELOG”,uName) }) }, []) 至于使用
uName
,如果您有一个(或上下文)可从其他组件访问,则可以将其设置为组件状态或全局存储

编辑:
如果您使用的是
redux
,那么您应该有一个分派功能,能够使用
uName
更新全局状态。与上面的代码段相比,唯一应该改变的是用您创建的分派函数替换
console.log
,并将
uName
变量作为参数。一旦它处于Redux状态,您应该能够将该值传播到需要该值的组件。

您能再解释一下使用uName吗?这太好了!我使用Redux