我遇到了一个我显然愚蠢到无法解决的问题。 我已经尝试解决这个问题很长时间了,但似乎没有解决。
我使用以下函数从 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
并尝试将其存储在状态中时有些东西丢失了,但我根本不知道如何修复它,因此我们将不胜感激。
最佳答案
这里的问题是您的函数 fetchUserData
不返回任何内容。
您的代码return user
从回调函数(then()
的参数)返回user
。
对此的一种解决方案是在回调函数中处理数据:
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
}
})
}
关于javascript - react native : Accessing values in returned object: undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42610709/