我有一个问题,我显然是愚蠢的解决.. 我一直试图解决这个问题很长时间,似乎没有破解。
我使用以下函数从firebase获取数据:
export function fetchUserData(userID) {
database.ref('users/' + userID).once('value').then(function(snapshot) {
if (!snapshot) {
console.log('An error occured');
} else {
let user = {
first_name: snapshot.val().first_name,
last_name: snapshot.val().last_name,
}
console.log(user);
return user
}
})
}
该函数返回一个对象,我试图在组件安装时设置状态:
componentWillMount() {
this.setState({
userData: fetchUserData('10212667682706511')
})
}
如果我在安装组件时尝试将userData
记录到控制台,我会得到未定义,虽然从fetchUserData
函数中记录用户,但我得到了对象:
我假设当我打电话给fetchUserData
并尝试将其存放在状态时迷路了,但我根本不知道如何修复它,所以任何帮助都会受到赞赏。
答案 0 :(得分:1)
问题在于,您的函数fetchUserData
不会返回任何内容。
您的代码return user
会从回调函数(user
的参数)返回then()
。
一个解决方案是处理回调函数中的数据:
export function fetchUserData(userID) {
database.ref('users/' + userID).once('value').then(function(snapshot) {
if (!snapshot) {
console.log('An error occured');
} else {
// Handle snapshot data here
}
})
}