当前位置: 首页 > 知识库问答 >
问题:

解析数据从Firebase在反应渲染

湛嘉歆
2023-03-14

我想解析数据,我收到的组件加载渲染。

我有这样一种状态:

constructor(props) {
    super(props);
    this.state = {
        loading: true,
        data: []
    }
}

这个组件安装在:

componentDidMount() {

    var post = [];

    var feedRef = firebase.database().ref().child('posts').limitToLast(10);
    feedRef.once('value', async (snapshot) => {

        post.push(
            Object.assign(snapshot.val(), {
                key: snapshot.key,
                user: snapshot.user,
                img: snapshot.img
            })
        )

        this.setState({ data: post, loading: false });

        console.log(this.state.data); // has the data

    });
}

下面是解析数据的步骤:

{this.state.data.map(post => {

                        return(
                            <div>
                                <img src={post.img} />
                            </div>
                        )

                    })}

问题是,尽管我的数据处于状态,但它并没有在render中进行解析。你知道怎么了吗?

我还有一个错误:索引。js:1警告:列表中的每个孩子都应该有一个唯一的“键”道具。

我的数据是错误的:控制台。日志:

Array(1)
0:
-M7Y4RJMl1pd4ynwXPYJ: {img: "https://", user: "josh", userid: "T87u4DL82IaGO9X"}
-M7Y4RJMl1pdwXPYJ: {img: "https://", user: "josh2", userid: "T87u82IaGO9X"}
-M7Y4RXPYJ: {img: "https://", user: "josh3", userid: "T87u4DL82GO9X"}
-M7Y4RJMl1XPYJ: {img: "https://", user: "josh4", userid: "T87uaGO9X"}
img: undefined
key: "posts"
user: undefined

共有1个答案

韩夕
2023-03-14

检查文件https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html您需要将对象转换为数组,渲染中的贴图函数需要数组,但您使用的是对象

var obj = snapshot.val();
var arrayPosts = Object.keys(obj).map(function(key) {
  return {
    key,
    user: obj[key].user,
    img: obj[key].img
 }
});
post = arrayPosts
 类似资料:
  • 如果你没有WebGL基础,可以先不用记忆每个的threejs 具体内容,有一个大致印象即可,学习本节课的重点是建立顶点的概念。如果你建立了顶点的概念,那么对于你深入理解学习Three.js很有帮助。 如果你已经有WebGL基础或者说图形学基础,说明你肯定有顶点的概念,本节课重点可以放在学习threejs的API使用细节,threejs引擎是如何封装webgl的。 JavaScript类型化数组 本

  • 我在解析JSON中的数据时遇到了以下问题 这些节点是在我使用Firebase时生成的。push()方法。是否有方法获取所有节点并访问信息。我正在使用java并在google app engine上开发一个项目。

  • 我试图从一个id呈现一个反应原生组件,它被赋予一个超文本传输协议请求,然后返回组件可以使用的json。由于超文本传输协议请求是异步的,因此传递到PostCard呈现中的数据是未定义的。我试图通过等待getSinglePost的返回来解决这个问题,但是数据仍然没有定义。如果不清楚,渲染函数调用renderCard函数,该函数应该等待getSinglePost函数的json,然后返回一个填充的Post

  • 我已与以下用户手动导入数据库的JSON文件: 问题是当我以“Naseebullah”(naseebullah@kcl.ac.uk)登录时,我没有收到他的详细信息: 换句话说,我不知道他的名字,性别等等... 这是我进行身份验证的地方: 当用户通过电子邮件和密码进行身份验证时,如何从数据库中检索用户的详细信息?

  • 在reactjs中,我试图从贴图对象渲染组件。更具体地说,按下一个按钮,我创建了一个新的“FormRow”组件,为了方便起见,我将其存储在javascript映射对象中(因为稍后我将使用它)。无论何时,我都想渲染刚刚添加的新组件,但我不知道如何从贴图中获取它。 我尝试以不同的方式解决我的问题,使用: myMap.for每个(key= 我没有尝试的是: https://stackoverflow.c

  • 我知道Firebase云消息传递方便发送推送通知和数据消息。我正在使用Flutter的firebase_messaging pub接收设备中的通知。onMessage、onLaunch和onResume回调只有在通知被取消或单击后才会被调用。 但是,我想访问收到的消息,无论通知是否被驳回。有没有办法做到这一点,不管app是在前台、后台还是被终止?