尝试将父数据传递给子组件时,我一直碰壁。
我的观点:
<%= react_component 'Items', { data: @items } %>
我的Items
组件进行 ajax 调用、设置状态并呈现Item
. 忽略传递给映射函数key={this.props.id}
的Item
实例,以便组件 html 呈现到页面。但是添加密钥,我得到一个控制台错误:Uncaught TypeError: Cannot read property 'id' of undefined
这是“项目”:
var Items = React.createClass({
loadItemsFromServer: function() {
$.ajax({
url: this.props.url,
dataType: 'json',
cache: false,
success: function(data) {
this.setState({data: data});
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.url, status, err.toString());
}.bind(this)
});
},
componentDidMount: function() {
this.loadItemsFromServer();
},
render: function() {
var itemNodes = this.props.data.map(function() {
return (
<Item key={this.props.id} />
);
});
return (
<div className="ui four column doubling stackable grid">
{itemNodes}
</div>
);
}
});
我的 item.js.jsx 组件只是格式化每个Item
:
var Item = React.createClass({
render: function() {
return (
<div className="item-card">
<div className="image">
</div>
<div className="description">
<div className="artist">{this.props.artist}</div>
</div>
</div>
);
}
});
React 开发工具扩展显示了 Items 中的 props 和 state 数据。然而,孩子们是空的。
我知道这一点,但我正在使用this.props.id
. 我不确定我错过了什么?