反应js组成

时间:2015-06-05 09:26:09

标签: javascript reactjs

我刚接触Js并尝试通过ajax(如下所述:Reactjs - loadResourcesFromServer - combine two sources)了解如何对从不同来源获得的数据进行合成。

我有一个Comment对象和一个Author对象。

var Author = React.createClass({
    ...
    render: function() {
        return (
            <div><a>{this.state.data.username}</a><img src="{this.state.data.picture}" /></div>
        );
    }
});

var Comment = React.createClass({
    ...
    render: function() {
        return (
            <div><p>{this.state.title}</p></div>
        );
    }
});

呼叫&lt;作者/&gt;和&lt;评论/&gt;返回2个单独的div,但我想显示类似

的内容
<div>
    <p>
        <img src="{this.state.data.picture}" />
        {this.state.title}, published by {this.state.data.username}
    </p> 
</div>

我尝试使用包装器

<CommentWithAuthor>
    <Author/>
    <Comment/>
</CommentWithAuthor>

但只能访问此包装器中对象的道具,而不能访问对象本身。我不能使用ref,因为我需要一个新的渲染器(React.js - access to component methods)。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您应该使用某种层次结构,例如,包括注释块作为作者块的一部分,如果您有多个作者并根据作者选择注释,则将其传递给作者ID

var Author = React.createClass({
    ...
    render: function() {
        return (
            <div><img src="{this.state.data.picture}" />
                 <comment authoriid={this.props.id}/>
                 <a>{this.state.data.username}</a>
            </div>
        );
    }
});

这样你就可以按照reactjs中的设计将数据从顶级(作者)发送到下一级别