javascript - React.js .map 不是函数,映射 Firebase 结果

标签 javascript reactjs

我是 React 和 Firebase 的新手,我真的很难处理数组和对象我猜你不能将 .map 用于我的数据格式化(或类型)的方式。我查看了堆栈,但没有任何帮助(至少在我实现修复的不力努力中)。

我正在尝试使用 .map 来映射来自 firebase 的结果,但我收到错误 TypeError: this.state.firebasedata.map 不是函数

获取数据:

componentWillMount(){
this.getVideosFromFirebase()

}

getVideosFromFirebase(){
  var youtubeVideos = firebase.database().ref('videos/');
  youtubeVideos.on('value', (snapshot) => {
    const firebasedata = snapshot.val();
    this.setState({firebasedata});
  });
}

enter image description here

相关国家:

constructor(props){
  super(props);

  this.state = {
    firebasedata: []
  }
  };

.map 在渲染中:

render(){
  return(
    <div>
         {this.state.firebasedata.map((item) =>
            <div key="{item}">
            <p>{item.video.name}</p>
            </div>
         )}
    </div>
  );
}

最佳答案

这是因为 firebase 不将数据存储为数组,而是存储为对象。所以你得到的回应是一个对象。

Firebase has no native support for arrays. If you store an array, it really gets stored as an "object" with integers as the key names.

阅读this详细了解为什么 firebase 将数据存储为对象。

要映射对象,你可以做类似的事情

Object.keys(myObject).map(function(key, index) {
   console.log(myObject[key])
});

关于javascript - React.js .map 不是函数,映射 Firebase 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49664994/

相关文章:

javascript - React.js 中的 props 问题

javascript - 在 React 中监听 Web 组件事件

javascript - 无法从子组件访问状态

javascript - jQuery 处理多个事件不起作用

javascript - 末尾允许所有数字和可选字母 x(不区分大小写)

javascript - 我应该用 Javascript 还是作为 AJAX 调用进行货币计算?

reactjs - 如何在 Next.js 上设置健康检查的端点?

java - 无法从 START_OBJECT token 中反序列化 'java.util.date' 的实例

javascript - 无法更新此 React 组件的状态

javascript - HTML 中的 OnClick 事件后在 Node 服务器上运行 JS 函数