React Native:访问返回对象中的值:undefined

时间:2017-03-05 16:13:08

标签: javascript firebase react-native firebase-realtime-database

我有一个问题,我显然是愚蠢的解决.. 我一直试图解决这个问题很长时间,似乎没有破解。

我使用以下函数从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函数中记录用户,但我得到了对象:

enter image description here

我假设当我打电话给fetchUserData并尝试将其存放在状态时迷路了,但我根本不知道如何修复它,所以任何帮助都会受到赞赏。

1 个答案:

答案 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
      }
   })
}