【发布时间】:2019-08-07 13:21:31
【问题描述】:
实际上,我是 React 开发的新手,我想展示带有摘要的产品页面,但在 JSON 中我有一个对象数组(也许,在代码中显示)。当我尝试使用 .map 时,我收到了一个错误,比如 prop 未定义。
我有如下 JSON 对象
{
"id": 794,
"name": "Pellentesque habitant morbi",
"description": "<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>\n",
"short_description": "<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>\n",
"sku": "1000",
"price": "200",
"categories": [
{
"name": "Best Seller"
}
],
"regular_price": "21.99",
"tags": [
{"name" : "Books Online"},
{"name" : "Ebooks"},
],
"images": [
{
"src": "https://example.com/wp-content/uploads/2017/03/T_2_front-4.jpg",
},
{
"src": "https://example.com/wp-content/uploads/2017/03/T_2_back-2.jpg",
}
],
"author": "Mo. Ra. Walambe"
}
在我的组件渲染方法中,我正在这样做
rendor(){
var tags = [];
const prodSum = this.props.product;
tags = prodSum.tags.map( (tag) => {
return <li>{tag.name}</li>;
});
return(
<h1 className="product_title">{prodSum.name}</h1>
<span className="posted_in">
Categories: <ul>{tags}</ul>
</span>
);
};
错误是:prodSum.tags 未定义,我可以在其中显示 prodSum.name
为什么它不适用于数组。
我要显示标签列表
【问题讨论】:
-
定义完
console.log(prodSum)会得到什么? -
如何将
product属性传递给组件? -
@MaazSyedAdeeb
{id: 794, name: "Pellentesque habitant morbi", description: "<p>Pellentesque habitant morbi tristique senectus … mi vitae est. Mauris placerat eleifend leo.</p>↵", short_description: "<p>Pellentesque habitant morbi tristique senectus … mi vitae est. Mauris placerat eleifend leo.</p>↵", sku: "1000", …} -
@devserkan 我正在从 express api 获取产品数据。之后我将它传递给组件。 `
' -
您在
console.log中看到tags数组。如果是,那么您应该有条件地渲染您的组件,因为您是从远程位置获取它并且在第一次渲染中它是未定义的。
标签: json reactjs express create-react-app