gpt4 book ai didi

javascript - 在 React 中渲染 JavaScript 对象

转载 作者:行者123 更新时间:2023-11-29 19:10:38 25 4
gpt4 key购买 nike

我设置了一个 React 项目,用于从 Firebase 数据库中获取一个对象并将其呈现到我的页面。但是我不知道如何正确呈现数据。

我正在获取的数据如下所示:

{
"projects": {
"0": {
"title": "test",
"function": "test2"
},
"1": {
"title": "test3",
"function": "test4"
}
}
}

在 Chrome React Debugger 中我看到了这个:

<div>
<Message key="0" data={function: "test2", title: "test", key: "0"}>...</Message>
<Message key="1" data={function: "test4", title: "test3", key: "1"}>...</Message>
</div>

但在元素 View 中,我只看到两个空的 div:

<div>
<div></div> == $0
<div></div>
</div>

目前我正在通过 <Message key={index} data={message} />到包含 {this.props.message} 的 Message 组件

编辑:将此更改为 {this.props.data} 因为没有消息 Prop 传递给消息组件

将代码重构为:<div> key={index} data={message} </div>但是返回错误

Objects are not valid as a React child (found: object with keys {function, title, key}). If you meant to render a collection of children, use an array instead or wrap the object using createFragment(object) from the React add-ons. Check the render method of ProjectList.

鉴于项目项具有键,我认为 CreateFragment 不是正确的解决方案。此外,Firebase 更喜欢通过数组传递带有键的对象,因此我给出的解决方案在这种情况下似乎不起作用。但是我怎样才能控制对象在页面上的呈现方式呢?

我完整的 ProjectList 组件如下所示:

import React from 'react';
import firebase from 'firebase';
import _ from 'lodash';
import Message from './Message'

class ProjectList extends React.Component {
constructor(props){
super(props);
this.state = {
messages: {}
};

this.firebaseRef = firebase.database().ref('projects');
this.firebaseRef.on("child_added", (msg)=> {
if(this.state.messages[msg.key]){
return;
}

let msgVal = msg.val();
msgVal.key = msg.key;
this.state.messages[msgVal.key] = msgVal;
this.setState({messages: this.state.messages});
});
}

render(){
var messageNodes = _.values(this.state.messages).map((message, index)=> {
return (
<Message key={index} data={message} />
);
});

return (
<div>
{messageNodes}
</div>
);
}
}

export default ProjectList;

谢谢!

编辑:将消息组件渲染更改为 {this.props.data}因为 Message 组件没有接收到消息 prop。

最佳答案

将您的 Message 呈现方法更改为:

render() {
return <div>{this.props.data}</div>
}

关于javascript - 在 React 中渲染 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39114285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com