编辑:这是答案
找到答案......事实上非常简单:只需要合并父母和孩子。两者都可以提出他们的ajax请求:
评论框将是:
var CommentBox = React.createClass({
loadCommentsFromServer: function() {...}
getInitialState: function() {...}
componentDidMount: function() {...}
render: function() {
return (
<div>
<Comment the_props={that.you.want} />
<Author userId={this.state.id.that.we.get.via.ajax.request} />
</div>
);
}
作者:
var Author = React.createClass({
loadAuthorFromServer: function() { // its own ajax request
$.ajax({
...
});
}
getInitialState: function() {...}
componentDidMount: function() {...}
render: function() {
return (
<div>
Hello i am {this.state.data.author} and this is my picture! <img src="{this.state.data.link}"/>
</div>
);
}
END OF EDIT
我尝试在react js中组合两个数据源。在本教程之后,我有类似
的内容var CommentBox = React.createClass({
loadCommentsFromServer: function() {
$.ajax({
url: this.props.url,
...
这显然只返回来自一个来源的数据。
但是我必须将Comment对象与其作者结合起来。这需要第二个查询,这取决于第一个查询的结果。在jQuery中我可以写
var queryComment = $.ajax({...});
queryComment.done(function(json){
$.each(json, function(key, comment) {
var queryAuthor = $.ajax({...});
queryAuthor.done(function(json){
comment.author = json;
});
});
});
我在反应文档中找不到如何做到这一点。我的猜测是我应该创建一个reactjs Author对象并使用Composition(http://facebook.github.io/react/docs/multiple-components.html),但这些示例都是静态的,只使用渲染函数...非常感谢!