Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何调试此错误:未捕获(承诺中)错误:对象作为子对象无效_Javascript_Reactjs - Fatal编程技术网

Javascript 如何调试此错误:未捕获(承诺中)错误:对象作为子对象无效

Javascript 如何调试此错误:未捕获(承诺中)错误:对象作为子对象无效,javascript,reactjs,Javascript,Reactjs,控制台中的完整错误: 未捕获(承诺中)错误:对象作为React子对象无效(找到:具有键{id、名称、说明、css、临时、只读、topPost}的对象) 如果要呈现子对象集合,请改用数组,或使用React附加组件中的createFragment(object)包装对象。检查导出的渲染方法(…) 我真的不知道这个错误是什么意思,也不知道代码中有哪一行,所以我不知道该怎么做 我正在使用api.jsx从Imgur获取数据(特别是在topic store.jsx中调用它),然后尝试在topic list.

控制台中的完整错误:

未捕获(承诺中)错误:对象作为React子对象无效(找到:具有键{id、名称、说明、css、临时、只读、topPost}的对象)
如果要呈现子对象集合,请改用数组,或使用React附加组件中的createFragment(object)包装对象。检查
导出的渲染方法(…)

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

我正在使用api.jsx从Imgur获取数据(特别是在topic store.jsx中调用它),然后尝试在topic list.jsx中呈现数据

main.jsx

var React=require('React');
变量标题=要求(“./标题”);
var TopicList=require(“./主题列表”);
module.exports=React.createClass({
渲染:函数(){
返回
{this.content()}
},
内容:功能(){
如果(本.道具.儿童){
归还这个。道具。孩子们
}否则{
返回
}
}
});
header.jsx

var React=require('React');
var-Router=require('react-Router');
var-Link=路由器.Link//路由器的链接对象是一个可渲染组件,在渲染时会变成锚定标记
//使用链接允许用户在不触发整页刷新的情况下更改路由,页面上的内容将更改,但浏览器不会刷新
module.exports=React.createClass({
渲染:函数(){
返回
Imgur浏览器
  • 主题#1
} });
主题列表.jsx

var React=require('React');
var TopicStore=require(“../stores/topic store”);
module.exports=React.createClass({
getInitialState:函数(){
返回{主题:[]}
},
componentWillMount:函数(){
TopicStore.getTopics().then(函数(){
//我们已成功获取主题
//主题可在TopicStore.Topics上找到
这是我的国家({
主题:TopicStore.topics
});
}.约束(这个);
},
渲染:函数(){
返回
主题列表
{this.renderTopics()}
},
renderTopics:函数(){
返回this.state.topics.map(函数(主题){
返回
  • {主题}
  • }); } });
    主题存储.jsx

    var-Api=require('../utils/Api');
    var回流=需要(“回流”);
    module.exports=reflow.createStore({
    getTopics:function(){
    返回Api.get('topics/defaults')。然后(函数(json){
    this.topics=json.data;
    }.约束(这个);
    }
    });
    
    api.jsx

    var Fetch=require('whatwg-Fetch');
    var rootUrl='1〕https://api.imgur.com/3/';
    变量apiKey='e80dc51eb3f6d56';
    module.exports=window.api={
    获取:函数(url){
    返回fetch(rootUrl+url{
    标题:{
    “授权”:“客户端ID”+apiKey
    }
    }).然后(功能(响应){
    返回response.json()
    });
    }
    };
    
    您在主题列表中缺少
      标记。jsx

      在主题的呈现调用中使用
        标记:

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

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

        当你做这样的事情时:

        返回
      • {topic}
      • 你基本上是想做:

        return
      • {{id:1,name:'One topic'}
      • 我不知道如何渲染原始对象。若要解决此问题,请指定要渲染对象的哪些关键帧。例如:

        renderTopics:function(){
        返回this.state.topics.map(函数(主题){
        返回(
      • {topic.id}{topic.name}
      • ) }); }
        要完成前面的回答,请在渲染函数中返回的JSX周围添加括号

        示例main.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/>
                }
            }
        });
        
        var React=require('React');
        变量标题=要求(“./标题”);
        var TopicList=require(“./主题列表”);
        module.exports=React.createClass({
        渲染:函数(){
        返回(
        {this.content()}
        );
        },
        内容:功能(){
        如果(本.道具.儿童){
        归还这个。道具。孩子们
        }否则{
        返回
        }
        }
        });
        
        我做了此更改,但仍然收到相同的错误。@mUICE您可以尝试更改
        if..else
        此处:
        if(this.props.children){return this.props.children}else{return}
        以仅使用,并查看编辑是否有效。介意引用我的答案,而不是不加署名地编辑吗?Sry for the@Aperçu-补充道:)只是为了文档——我确实尝试了整个过程,然后发布了它——尽管使用了相同的语言
        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/>
                }
            }
        });