【发布时间】:2021-03-08 00:47:59
【问题描述】:
如何在 React js 中映射一个嵌套的 json 数据 例如我想显示我从 api 收到的产品图片
export class Planview extends Component{
constructor() {
super();
this.state = {
package: [],
};
}
componentDidMount() {
const ProdID = this.props.match.params.ProductID
fetch(`http://127.0.0.1:8000/api/plan/${ProdID}/`)
.then(response => response.json())
.then(responseData => {
this.setState({
package: responseData
});
})
.catch(error => {
console.log('Error fetching and parsing data', error);
});
}
render(){
return(<>
<div className="container mar" >
<h1 className="my-4">{this.state.package.title}</h1>
<div className="row">
<div className="col-md-offset-2">
<div className="row" id="gradient">
<div className="col-md-6 img-responsive">
<img
className ="img-main img"
src={"http://127.0.0.1:8000"+this.state.package.thumbnail}
alt="main"
fluid ="True"/>
</div>
<div className="col-md-6" id="overview">
<h4>{this.state.package.code}</h4>
<h5><small> {this.state.package.created_at}</small></h5
</div>
<div className="row mt-4">
<h3><small></small></h3>
<div className="row">
{
this.state.package.image.map(function (person, index) {
return (
<div className="col" key={index}>
<img className={person.image} src="" alt="1"/>
</div>
)})}
</div>
</div>
</div>
<div className="row">
<h3 className="my-4">{this.state.package.description}</h3>
</div>
</div>
</div>
</div>
</> );
}
}
export default Planview;
我的 json 就像
`{id: 1, image: [{image: "/media/plan_images/Home-5-E-plan-1024x684.jpg"},…],
title: "sample",…}`
类似json的扩展
`code: "MAG0001"
created_at: "2020-11-23"
description: "college book"
details: {age: 31, city: "New York", name: "John"}
id: 1
image: [{image: "/media/plan_images/Home-5-E-plan-1024x684.jpg"},
{image: "/media/plan_images/Home-4-E-plan-1024x684.jpg"},
{image: "/media/plan_images/Home-3-E-plan-1024x684.jpg"},
]
slug: "sample"
thumbnail: "/media/plan_images/900-square-feet-home-plan.jpg"
title: "sample"`
从上面的 json 我想显示来自字段图像数组的图像,它包含多个图像以及字段名称详细信息中的 json 数据
【问题讨论】:
-
试试这个 -
<img src={person.image} alt="1"/>- 检查图片路径是否正确 -
但现在我收到“TypeError: Cannot read property 'map' of undefined”错误
-
你的状态
package应该是object而不是数组。 this.state = { package:{ image: []}, }; -
还有安全检查
this.state.package.image && this.state.package.image.map
标签: json reactjs django image nested