gpt4 book ai didi

javascript - 如何调试此错误 : Uncaught (in promise) Error: Objects are not valid as a React child

转载 作者:可可西里 更新时间:2023-11-01 01:38:31 25 4
gpt4 key购买 nike

控制台中的完整错误:

Uncaught (in promise) Error: Objects are not valid as a React child (found: object with keys {id, name, description, css, ephemeral, readonly, topPost})
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 exports.(…)

我真的不知道这个错误是什么意思,它也没有指向代码中的一行,所以我不知道该怎么做。

我正在使用 api.jsx 从 Imgur 获取数据(特别是我在 topic-store.jsx 中调用它)然后尝试在 中呈现数据>主题列表.jsx

ma​​in.jsx

var React = require('react');
var Header = require('./header');
var TopicList = require('./topic-list');

module.exports = React.createClass({
render: function () {
return <div>
<Header />
{this.content()}
</div>
},
content: function () {
if (this.props.children) {
return this.props.children
} else {
return <TopicList/>
}
}
});

header.jsx

var React = require('react');
var Router = require('react-router');
var Link = Router.Link; //Router's Link object is a renderable component, that turns into an anchor tag when rendered
//Using Link allows a user to change routes without triggering a full page refresh, the content on the page will change but the browser will not refresh

module.exports = React.createClass({
render: function () {
return <nav className="navbar navbar-default header">
<div className="container-fluid">
<Link to="/" className="navbar-brand">
Imgur Browser
</Link>
<ul className="nav navbar-nav navbar-right">
<li><a>Topic #1</a></li>
</ul>
</div>
</nav>
}
});

topic-list.jsx

var React = require('react');
var TopicStore = require('../stores/topic-store');

module.exports = React.createClass({

getInitialState: function () {
return {topics: []}
},

componentWillMount: function () {
TopicStore.getTopics().then(function () {
//We have successfully fetched topics
//Topics are available on TopicStore.topics
this.setState({
topics: TopicStore.topics
});
}.bind(this));
},

render: function () {
return <div className="list-group">
Topic List
{this.renderTopics()}
</div>
},

renderTopics: function () {
return this.state.topics.map(function(topic) {
return <li>
{topic}
</li>
});
}
});

topic-store.jsx

var Api = require('../utils/api');
var Reflux = require('reflux');

module.exports = Reflux.createStore({

getTopics: function() {

return Api.get('topics/defaults').then(function(json) {

this.topics = json.data;

}.bind(this));
}
});

api.jsx

var Fetch = require('whatwg-fetch');
var rootUrl = 'https://api.imgur.com/3/';
var apiKey = 'e80dc51eb3f6d56';

module.exports = window.api = {
get: function(url) {
return fetch(rootUrl + url, {
headers: {
'Authorization': 'Client-ID ' + apiKey
}
}).then(function (response) {
return response.json()
});
}
};

最佳答案

问题取决于您在 renderTopics 方法中呈现主题对象的方式。

当你做这样的事情时:

return <li>{topic}</li>

你基本上是想做:

return <li>{{ id: 1, name: 'One topic' }}</li>

而且 React 不知道如何渲染原始对象。要解决您的问题,请指定您要渲染的对象的哪些键。例如:

renderTopics: function () {
return this.state.topics.map(function(topic) {
return (<li>{topic.id} {topic.name}</li>)
});
}

关于javascript - 如何调试此错误 : Uncaught (in promise) Error: Objects are not valid as a React child,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34919111/

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