javascript - React.js : JSON request not rendering?

标签 javascript reactjs

代码:

var React = require('react');
var User = require('./User.jsx');

var LeaderBoard = React.createClass({

    users: [],

    componentDidMount: function () {    
      var url = 'https://fcctop100.herokuapp.com/api/fccusers/top/alltime'
      var that = this;

      fetch(url)
      .then(function(response) {
        if (response.status >= 400) {
          throw new Error("Bad response from server");
        }
        return response.json();
      })
      .then(function(data) {
        that.setState({ users: data });
      });
    },

    render: function() {

        var usersLeaderboard = this.users.map(function(item) {
            return <User key={item.id} img={item.img} username={item.username} recent={item.recent} alltime={item.alltime} />;
        });

        return (
            <table>
                <tbody>
                    <tr>
                        <th>Avatar</th>
                        <th>Username</th> 
                        <th>30 Days</th>
                        <th>All Time</th>
                    </tr>
                    {usersLeaderboard}
                </tbody>
            </table>
        );
    } 
});
<小时/>

情况:

我正在关注 FreeCodeCamp 类(class)并尝试使用 React 创建排行榜。遗憾的是,并非所有数据都会呈现,并且我在终端或 Chrome 开发工具控制台中没有出现任何错误。

问题:

这是我的屏幕上呈现的内容:

enter image description here

没有用户出现:/

我做错了什么?

P.S.:React 新手,开始学习。

最佳答案

您需要更新 LeaderBoard 组件,因为您使用 this.setState({ users: data }) 使用用户数据设置组件状态,但是您没有使用 users 键定义状态对象。你可以这样做:

var LeaderBoard = React.createClass({
  getInitialState: function () {
   return {
     users: [],
   };
  },

  ...other code
});

第二件事是,在渲染方法中,您需要从 state 对象中获取用户,如下所示:

render: function() {
  var usersLeaderboard = this.state.users.map(function(item) {
      return <User key={item.id} img={item.img} username={item.username} recent={item.recent} alltime={item.alltime} />;
    });

    return (
     ...other code
    );
}

关于javascript - React.js : JSON request not rendering?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43438307/

相关文章:

javascript - 获取弹出窗体中按钮的值

javascript - 使用 CSS 设置 HTML5 自动对焦属性

javascript - ReactDOM.findDOMNode 未按预期工作

html - CSS:3 或 4 列,具体取决于设备方向

reactjs - 如何正确为React Native Web Pressable组件添加onHoverIn TS类型?

javascript - Node.js zlib.deflate 输出太长

javascript - 如何使用 grunt autoprefixer 定位 IE9 及更高版本?

javascript - 无法在 JavaScript 中使用 Google 日历 (v3) API 中的 OAuth 2.0 进行身份验证

reactjs - Stripe 订阅和 React - 可以安全地在客户端拥有 key 吗?何时以及如何收集信用卡信息?

reactjs - 我应该使用 useEffect() 进行 dom 操作还是直接进行操作?