我是ReactJS的新手,正在尝试理解它。现在,我遇到了加载渲染所需信息的情况。但是,因为它是异步的,所以组件在信息传递给它之前呈现自己。
var info;
function getInfo() {
//this will come from backend REST with Backbone which takes a bit
}
var InfoPage = React.createClass({
render: function() {
getInfo()
return (
<div>info: {info}</div>
);
}
});
现在div将不会显示info-value,因为它还没有在渲染中设置。那么我如何让render等待信息呢?或者应该如何解决这个问题?
实际的React.renderComponent是从顶层调用的,它会触发所有子组件,所以我认为我不能强制执行新的呈现(我不应该?)。
发布于 2014-06-12 21:18:10
您需要做如下操作:
var InfoPage = React.createClass({
getInitialState: function() {
return {info: "loading ... "};
},
componentDidMount: function() {
this.getInfo();
},
render: function() {
return (
<div>info: {this.state.info}</div>
);
},
getInfo:function(){
$.ajax({ url:"restapi/getInfo/whatever", .... }).success(function(res){
this.setState({info:res});
}.bind(this));
}
});
https://stackoverflow.com/questions/24185029
复制相似问题