Я следую учебному курсу reactjs, и я продолжаю сталкиваться с проблемой при передаче значения из состояния одного компонента в другой компонент. Ошибка «Невозможно прочитать свойство« map undefined »вызывается при выполнении функции map в компоненте CommentList. Что может заставить опору стать неопределенным при переходе из CommentBox в CommentList?Невозможно прочитать свойство 'map' of undefined
var CommentList = React.createClass({
render: function() {
var commentNodes = this.props.data.map(function (comment){
return (
<div>
<h1>{comment.author} </h1>
</div>
);
});
return (
<div className="commentList">
{commentNodes}
</div>
);
}
});
var CommentBox = React.createClass({
getInitialState: function(){
return {data: []};
},
getComments: function(){
$.ajax({
url: this.props.url,
dataType: 'json',
success: function(data){
this.setState({data: data});
}.bind(this),
error: function(xhr, status, err){
console.error(url, status, err.toString());
}.bind(this)
});
},
componentWillMount: function(){
this.getComments()
},
render: function(){
return (
<div className="commentBox">
{/*this.state.data.comments*/}
{<CommentList data={this.state.data.comments}/>}
</div>
);
}
});
React.renderComponent(
<CommentBox url="comments.json" />,
document.getElementById('content')
);
Это решение сработало, но мне любопытно. Если у меня будет более сложная структура JSON, мне придется инициализировать объект данных таким же образом? Кажется, должен быть лучший способ. Спасибо – Nael
@Nael Нет, вам не нужно. Просто заверните блок, как показано выше. :) – taggon
Это работает, но в чем причина ошибки? – Cheng