У меня проблема с одной из моих компонентов React. Я думаю, что AJAX не загружает весь контент с внешнего сервера, прежде чем React отобразит компонент ChildComp
.
Выше вы можете увидеть дерево ответа, которое поступает с сервера. И это мой код компонента:
var ChildComp = React.createClass({
getInitialState: function(){
return {
response: [{}]
}
},
componentWillReceiveProps: function(nextProps){
var self = this;
$.ajax({
type: 'GET',
url: '/subscription',
data: {
subscriptionId: nextProps.subscriptionId //1
},
success: function(data){
self.setState({
response: data
});
console.log(data);
}
});
},
render: function(){
var listSubscriptions = this.state.response.map(function(index){
return (
index.id
)
});
return (
<div>
{listSubscriptions}
</div>
)
}
});
Это работает отлично, но если я изменю свое возвращение на:
return (
index.id + " " + index.order.id
)
id undefined. И все остальные свойства объекта заказа. Почему так? Если я console.log
мой ответ после функции success
, он дает все данные (например, на картинке). Я предполагаю, что только первые объекты загружаются, когда React отображает компонент, и после этого загружаются все остальные внутренние объекты. Я не могу сказать, если это случай (звучит так странно), и я не могу сказать, как это решить.
Я тоже попробовал что-то вроде этого
success: function(data){
self.setState({
response: data
}, function(){
self.forceUpdate();
})
}.bind(this)
но повторная визуализация выполняется до того, как будет запущен мой console.log(data)
. Как ждать ответа AJAX и только после этого визуализировать компонент?