У меня есть следующий компонент, где я тянуть в некоторых JSON, и я пытаюсь получить некоторую вложенную информацию с { this.state.data.items[0]}
, однако я получаю ошибку: Uncaught TypeError: Cannot read property '0' of undefined
, хотя {this.state.data}
и {this.state.data.items}
работает хорошоВозвращение массива итерация
Вот полный код:
var Box = React.createClass({
getInitialState: function() {
return {data: []};
},
loadStuffFromServer: function() {
$.ajax({
url: this.props.url,
dataType: 'json',
cache: false,
success: function(data) {
this.setState({data: data});
console.log(data);
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.url, status, err.toString());
}.bind(this)
});
},
componentDidMount: function() {
this.loadStuffFromServer();
setInterval(this.loadStuffFromServer, this.props.pollInterval);
},
render: function() {
return (
<div>
{ this.state.data.items[0]}
</div>
);
}
});
это .state.data.items - это объект, а не массив! –
В этом сообщении объясняется, как получить первое значение объекта http://stackoverflow.com/a/19138293/4774263 –
попробуйте поместить 'this.loadStuffFromServer()' в 'componentWillMount()'. У вас есть только «данные» в вашем начальном состоянии, а не 'data.items' – oobgam