javascript - react native : Accessing values in returned object: undefined

标签 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并尝试将其存储在状态中时有些东西丢失了,但我根本不知道如何修复它,因此我们将不胜感激。

最佳答案

这里的问题是您的函数 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/

相关文章:

javascript - 弹窗返回值

javascript - jQuery - 如何将事件附加到 DOM 对象并在不同的位置将处理程序绑定(bind)到它?

firebase - 如何将图像添加到 Firestore

javascript - 如何从 componentDidMount 调用成员函数

ios - 如何从 xcode 获取 TestFlight 应用程序的日志

android - npx react-native run-android 不起作用 - "java.io.IOException: The filename, directory name, or volume label syntax is incorrect"

javascript - 表单提交后重新打开(或不关闭)纯 css 模式窗口

javascript - 如何安全地将内容从非安全页面发送到安全 URL?

javascript - 使用 Firebase 3 上传 Base64 图片

javascript - 从 firebase 检索值时收到未定义的消息