我可以将解包对象作为参数传递给Javascript或JSX吗?

时间:2015-09-15 18:35:40

标签: javascript python reactjs react-jsx

var data = [
    {author: 'foo', comment: 'nice'},
    {author: 'bar', comment: 'wow'}
];

var CommentBox = React.createClass({
    render: function () {
        var CommentNodes = this.props.data.map(function (comment) {
            return (
                <Comment author={comment.author} comment={comment.comment}>
                </Comment>
            );
        });
        return (
            <div className="comment-box">
                {CommentNodes}
            </div>
        );
    }
});

var Comment = React.createClass({
    render: function () {
        return (
            <div className="comment-box comment">
                <h2 className="comment-author">
                    {this.props.author}
                </h2>
                {this.props.comment}
            </div>
        );
    }
});

React.render(<CommentBox data={data}/>, document.getElementById("example"));

在这段代码中,我只是使用Comment将参数传递给data。由于dataobject,因此类似于Python dict。所以我想知道,我可以通过data作为解包object吗?就像使用**一样是Python:

>>> def show(**kwargs):
...     return kwargs
... 
>>> items = {'a': 1, 'b': 2}
>>> print(show(**items))
{'a': 1, 'b': 2}

2 个答案:

答案 0 :(得分:3)

正如@AlexPalcuie在上面的回答,您可以使用object spread来完成python **运算符的确实。

所以这相当于你上面的代码:

var CommentBox = React.createClass({
    render: function () {
        var CommentNodes = this.props.data.map(function (comment) {
            return (
                <Comment {...comment}>
                </Comment>
            );
        });
        return (
            <div className="comment-box">
                {CommentNodes}
            </div>
        );
    }
});

答案 1 :(得分:2)

您可以使用spread attributes语法。