javascript - React JS 上的 Firebase Firestore 双循环数据

标签 javascript reactjs firebase google-cloud-firestore

我有这样的代码 模型.js

    import firebase from '../config/Firebase'
    class Dashboard {
        GetAllBlog() {
            return firebase.collection('blogs').get()
        }
    }
    export default new Dashboard()

然后,我将模型返回到 home.js

import React from 'react';
import Index from './components/index'
import CardOverview from './components/CardOverview'

import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
import Container from '@material-ui/core/Container'
import Paper from '@material-ui/core/Paper'
import Grid from '@material-ui/core/Grid'
import Typography from '@material-ui/core/Typography';
import DashboardService from '../services/dashboard'
const styles = theme => ({
  root: {
    padding: theme.spacing(3, 2),
  },
  row: {
    padding: theme.spacing(3, 2),
  }
});

class Home extends React.Component {
  state = {
    blogs: []
  }

  componentDidMount() {
    DashboardService.GetAllBlog()
      .then(snapshot => {
        this.setState({
          blogs: snapshot
        })
      })
      .catch(err => {
        console.log('Error getting documents', err);
      });
  }
  render() {
    const { classes } = this.props
    const {
      blogs
    } = this.state

    blogs.forEach(element => {
      console.log("blogs", element.data().title)

    });
    return (
.......

但是当像这样使用 foreach 时我得到了双倍

enter image description here .,

其实我有这样的数据(两条数据)

enter image description here

我看看如何通过将所有快照转换为数组来使其变得简单,(我可以从 firebase 创建连接数组),但我很困惑,为什么这个双循环,但它循环了 2 次,但一次,它是基于循环的按长度排列

最佳答案

这是因为状态改变了2次,那么每次改变状态都会执行渲染

关于javascript - React JS 上的 Firebase Firestore 双循环数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61292681/

相关文章:

javascript - jQuery 根据特定文件夹设置的间隔淡入不同的主体背景图像

javascript - setInterval 的页面安全性

ios - Firebase iOS SDK - 计算连接的用户

java - 任务在android studio中不成功

javascript - 如何将submit()事件延迟到Geocoder完成之后?

javascript - 添加到 Chrome 扩展中的 innerHTML 的内容被修改

reactjs - Material-UI 与 Next.js 并明确给出警告 : Prop `className` did not match for server & client

javascript - 一个子组件与 ReactJS 中的另一个兄弟组件对话

javascript - React Native - Firebase onSnaphot + FlatList 分页

android - 将 Either<L,R> 与 Firestore 结合使用