我的 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 未定义。以及订单对象的所有其他属性。为什么会这样?如果我console.log
在success
函数后做出响应,它会提供所有数据(如图所示)。我的猜测是当 React 渲染组件时只加载第一个对象,然后加载所有其他内部对象。我真的不能说是不是这种情况(听起来很奇怪),我也不能说如何解决这个问题。
我也尝试过这样的事情
success: function(data){
self.setState({
response: data
}, function(){
self.forceUpdate();
})
}.bind(this)
但在console.log(data)
触发我之前仍然会重新渲染。如何等待 AJAX 响应,然后才渲染组件?