从其他组件传递的ReactJS访问JSON对象
我是ReactJs新手,有一个问题,现在我觉得有点难以理解 我有一个组件,它调用检索XML对象,这个XML对象稍后被解析为JSON对象,然后传递给其他组件,以便对其进行排序。 现在我被卡住了,无法正确访问第二个组件上的JSON 当我尝试这样做的时候。props.files.map-它说map是未定义的 这是我传递属性的父组件渲染方法:从其他组件传递的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
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)