javascript - React JS Ajax 数据循环

标签 javascript ajax reactjs

我对 React 很陌生(今天正在构建我的第一个应用程序)。我正在使用 ajax 插件 ( react-ajax ),到目前为止,对 API 的单个 JSON 调用表现良好。然而,我正在努力学习如何循环整体以输出多个结果。

    var playersUrl = "/public/index.php/players.json";
    var PlayerList = React.createClass({
    getInitialState: function() {
        return {
            players: ''
        };
    },
    responseHandler: function(err, data){
        this.setState({
            players: data.body.data
        })
    },
    render: function() {
        return (
            React.createElement("ul", {className: "players"},
                React.createElement(Ajax, {url: playersUrl, onResponse: this.responseHandler}),
                this.state.players.map(function (player) {
                  return <li>player.id</li>
                })
            )
        )
    }
});
ReactDOM.render(<PlayerList />, document.getElementById('player-list'));

基本上希望编写一个each循环来输出一些用响应处理程序的JSON结果填充的Html。非常感谢!

{
   "data":[
      {
         "id":"18",
         "firstName":"Graham",
         "gender":{
            "label":"Male",
            "value":"male",
            "selected":true
         },
         "preferred_position":{
            "label":"Attacking",
            "value":"attacking",
            "selected":true
         },
         "dob":{
            "date":"1991-03-25 00:00:00.000000",
            "timezone_type":3,
            "timezone":"UTC"
         },
         "PassingRatingAvg":2.5,
         "ShootingRatingAvg":5,
         "DribblingRatingAvg":3,
         "PaceRatingAvg":2,
         "DefendingRatingAvg":1,
         "OverallRating":13.5,
         "TotalRating":13
      }
   ],
   "meta":{
      "pagination":{
         "total":1,
         "count":1,
         "per_page":100,
         "current_page":1,
         "total_pages":1
      }
   }
}

编辑:当前错误“PlayerList.js:18 Uncaught TypeError: this.state.players.map 不是函数”。

最佳答案

如果我正确理解您的问题,您的回复正文可能包含有关玩家的多条记录。但是你的responseHandler只处理一条记录的 JSON 格式。您能描述一下 JSON 响应正文的结构吗?基本上,您可以做的就是向您的州添加一个玩家字段以获取有关玩家的多个记录,并替换您的 <h1>{this.state.name}</h1>类似

this.state.players.map(function (player) {
  return <h1>player.name</h1>
})

responsehandler应该是这样的:

function(err, data) {
    this.setState({players: data.body.data})
}

如果您没有使用 es6,您可以将其更改为:

var playersDiv = []
this.state.players.forEach(function(player) {
    playerDiv.push(<h1>player.name</h1>)
})
return playersDiv 

关于javascript - React JS Ajax 数据循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36750068/

相关文章:

javascript - jquery动态传值的方法

javascript - Rails 表单和对不同 Controller 的自定义 Ajax 调用

javascript - jQuery Ajax 两个相同的函数适用于其中一个而不适用于另一个

javascript - Jquery 在点击图片时切换

javascript - 如何将变量从 'outside' 传递给 React 应用程序?

javascript - 为什么 React router v4 会做出错误的重定向?

javascript - JavaScript 中分支重置组的替代方案?

javascript - ionic2/angular2 - 在 typescript 中访问外部文件中的对象

javascript - OpenLayers 3 使用 snap 进行绘制和修改

php - 从 ajax 中检索 php 数组