【问题标题】:How to pass json values into React component如何将 json 值传递给 React 组件
【发布时间】:2016-01-27 20:06:19
【问题描述】:

我正在使用 React 创建一个 Github 问题查看器。

我有一个设置 repo 的组件,然后我想创建单独的组件来获取问题名称、编号、登录等。这些组件最终将在主组件/视图中使用。我有点卡住了,下面是我到目前为止所拥有的。

var GetRepo = React.createClass({
getRepo: function(){
    var issues = $.getJSON('https://api.github.com/repos/facebook/react/issues', function (data) {
    })
},
render: function() {
    return <div>My repo: {this.props.repo}</div>
}

});

ReactDOM.render(<GetRepo repo="facebook/react/issues" />, document.getElementById('main'));


var IssueName = React.createClass({
});
//IssueName gets the data.title (the issue name) using repo GetRepo

var IssueNumber = React.createClass({
});

//IssueNumber gets the data.number (the issue number) using repo from GetRepo

【问题讨论】:

标签: javascript json reactjs


【解决方案1】:

当然不是唯一的方法,但以下应该可行:

var GetRepo = React.createClass({

    getInitialState: function() {
        return {
            repo: {}
        };
    },

    componentDidMount: function(){
        var that = this;
        var issues = $.getJSON('https://api.github.com/repos/facebook/react/issues', function (data) {
            that.setState({
                repo: data
            });
        });
    },

    render: function() {
        return (
            <div>
                <IssueName repo={this.state.repo} />
                <IssueNumber repo={this.state.repo} />
            </div>
        );
    }
});


//IssueName gets the data.title (the issue name) using repo GetRepo
var IssueName = React.createClass({
    render: function() {
        return (
            <div>this.props.repo.title</div>
        );
    }
});

//IssueNumber gets the data.number (the issue number) using repo from GetRepo
var IssueNumber = React.createClass({
    render: function() {
        return (
            <div>this.props.repo.number</div>
        );
    }
});

ReactDOM.render(<GetRepo repo="facebook/react/issues" />, document.getElementById('main'));

【讨论】:

  • 我认为你应该在某个地方调用getRepo 方法,可能在componentDidMount 中。
  • @pawel 是的。谢谢:)
  • 谢谢,这很有帮助。但是,它将 this.props.repo.title 和 this.props.repo.number 输出为文本。好像我需要解析 JSON 数据?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
  • 1970-01-01
  • 2019-12-06
  • 2020-04-30
  • 1970-01-01
  • 2019-01-18
  • 2020-12-19
相关资源
最近更新 更多