开发者问题收集

React 的 JSON 请求返回未定义

2016-04-15
3762

我尝试使用 componentDidMount 将 JSON 源加载到我的 React 组件中。当我最初提取 JSON 源时,一切都检查无误,我可以正常查看 JSON 数据。问题在于,当我尝试深入研究 JSON 数据以获取游戏信息时,我开始收到 undefined 错误。

这是我的 React JS:

var MLBScores = React.createClass({
  getInitialState: function() {
    return {
      hometeam: '',
      awayteam: ''
    };
  },

  componentDidMount: function() {
    this.serverRequest = $.get(this.props.feed, function(result) {

    var scoreFeed = result;

    var homeTeamName = scoreFeed.games.game[0].home_team_name;


      console.log(homeTeamName);

    }.bind(this));
  },

  componentWillUnmount: function() {
    this.serverRequest.abort();
  },

  render: function() {
    return ( < div > {
        this.state.hometeam
      }
      vs. {
        this.state.awayteam
      } < /div>
    );
  }
});

ReactDOM.render( < MLBScores feed= "https://raw.githubusercontent.com/erwstout/pinetar/develop/src/client/app/mlb-scoreboard.json" / > ,
  document.getElementById('container')
);

值得注意的是,如果我仅注释掉 var homeTeamName 行并将 console.log(homeTeamName) 更改为 console.log(result); ,它会打印 JSON 数据。

在进入 React 之前,我已经通过 codepen 充实了一些数据(和我的想法),因此我对 json 文件的结构非常熟悉。所以我想知道这是否与我在 React 中进行调用的方式有关?这是我第一次使用 React,所以我可能错过了什么。在我的 codepen 中,我获取了每个游戏的数据,但为了在 React 中测试它,我只是想获取 game[0] 信息。

我有一个 JS Fiddle 的 React 代码 。任何帮助都将不胜感激。我一直在关注 React 文档 ,但还是搞不懂。谢谢!

2个回答

返回的是字符串,而不是对象。修改它以获取您的主队名称 var scoreFeed = JSON.parse(result).data;

或者您使用 getJSON()

garajo
2016-04-15

我没有深入研究你的 JSON 响应,但三元组可能会有帮助..

var homeTeamName = 
scoreFeed.games && scoreFeed.games.game[0]scoreFeed ? scoreFeed.games.game[0].home_team_name : 
null
fresh5447
2016-04-15