Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
从其他组件传递的ReactJS访问JSON对象_Json_Reactjs_Callback_Ecmascript 6_State - Fatal编程技术网

从其他组件传递的ReactJS访问JSON对象

从其他组件传递的ReactJS访问JSON对象,json,reactjs,callback,ecmascript-6,state,Json,Reactjs,Callback,Ecmascript 6,State,我是ReactJs新手,有一个问题,现在我觉得有点难以理解 我有一个组件,它调用检索XML对象,这个XML对象稍后被解析为JSON对象,然后传递给其他组件,以便对其进行排序。 现在我被卡住了,无法正确访问第二个组件上的JSON 当我尝试这样做的时候。props.files.map-它说map是未定义的 这是我传递属性的父组件渲染方法: render() { return ( <div> <List files={this.con

我是ReactJs新手,有一个问题,现在我觉得有点难以理解

我有一个组件,它调用检索XML对象,这个XML对象稍后被解析为JSON对象,然后传递给其他组件,以便对其进行排序。 现在我被卡住了,无法正确访问第二个组件上的JSON

当我尝试这样做的时候。props.files.map-它说map是未定义的

这是我传递属性的父组件渲染方法:

render() {
    return (
        <div>

            <List files={this.convertToJson()}/>

        </div>
    )
}
我应该如何编写我的第二个组件来访问这个JSON数据并在以后显示所有属性,我希望迭代它并访问所有属性

this.props.files.map(function($) {
          return <li key={$}>{$}</li>
        })

我认为问题实际上可能在于
this.convertToJson()

您需要将JSON对象解析为Javascript对象,以便按照您建议的方式对其进行迭代

看看这个例子,它似乎工作正常

//这只是在模拟JSON对象
const json=json.stringify([{
"$": {
“日期”:“日期”,
“说明”:“,
“名称”:“,
“大小”:“107829”,
“类型”:“pdf”
}
}, {
"$": {
“日期”:“日期”,
“说明”:“,
“名称”:“,
“尺寸”:“682015”,
“类型”:“pdf”
}
}
]);
//这就是你所关心的
const obj=JSON.parse(JSON);
对象映射(o=>{
//您需要获得o.$才能获得实际对象
控制台日志(o.$)

});
在映射文件之前,尝试
console.log
并检查文件是否未定义。能否发布
this.convertToJson()
的代码?除了@mersocarlin之外,尝试
console.log(typeof this.props.files)
,以查看
文件
是否实际上是一个数组。否则,
map
将不起作用。您可能还需要在第二个组件中使用,将
this.props.files
默认值设置为空数组。@Chase this.convertToJson()执行以下操作:返回JSON.stringify(this.state.data)当我尝试在我的代码中使用您的代码时,我得到以下错误:obj.map不是函数。我正在使用您的方式执行cont json=json.stringify(this.state.data)和稍后的操作。如果我在这个状态下控制台记录json,它会打印整个对象,如果我在解析它之后尝试console.log它,我会得到无限的[object object]
json。stringify
只是模仿json,你不需要对json代码进行stringify,只需解析它。如果您不需要将其设置为JSON,只需尝试在
this.site.data
上使用
.map
,关键是它一开始不是JSON,而是我收到的XML。有人告诉我将其字符串化为JSON,然后对其进行解析,但它不起作用。
this.props.files.map(function($) {
          return <li key={$}>{$}</li>
        })
convertToJson = () => {
return JSON.stringify(this.state.data)