Javascript useEffect获取firebase数据
我正在尝试从firebase获取我的用户名。 console.log显示正确的用户名。但我如何访问useEffect内部的uName以在我的tet组件中显示它呢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
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