【发布时间】:2016-11-22 06:52:50
【问题描述】:
我有以下代码从使用 props 的父组件传入的对象中返回带有键和值对的列表元素。为什么它不起作用?
我收到一条错误消息:TypeError: Cannot read property 'props' of undefined(...) 该错误是因为我的 return 语句中调用了 this.props.data。没有通过道具传递数据不是问题。我查看了反应输出树,我的数据对象确实传递给了孩子。
class Parent extends React.Component {
render(){
return (
<div>
{this.props.transactions.map(function(el,i) {
return <div key={i}>
<div>
{el.category}
</div>
<Child data={el.months}/>
</div>;
})}
</div>
);
}
}
class Child extends React.Component {
render(){
return (
<ul>
{Object.keys(this.props.data).map(function(key,index) {
return <li key={index}>{this.props.data[key]}</li>
})};
</ul>
);
}
}
这里是父组件传入的数据:
[{
"category": "Bills",
"month": {
"feb": 9,
"mar": 169,
"apr": 10,
"may": 867,
"jun": 394,
"jul": 787,
"aug": 1112,
"sep": 232,
"oct": 222,
"nov": 306,
"dec": 1096
}
}];
【问题讨论】:
-
不是你问的,但你不应该使用数组索引作为键,特别是如果数组可能被重新排序,或者添加或删除项目。如果
category是唯一的,则可以将其用作键。
标签: javascript reactjs