如何在React中从API响应中呈现数据?

时间:2016-11-14 16:59:18

标签: javascript reactjs fetch

如何初始化从API到变量的响应,以便我可以在render()函数中使用它?为什么component.setState无效? 错误:
未捕获的TypeError:无法读取未定义的属性'username'(...)

class Main extends React.Component {
 constructor(props) {
     super(props);
    this.state = {
      data: 23
    };
 }

  componentDidMount() {
var component = this;


      fetch('https://fcctop100.herokuapp.com/api/fccusers/top/alltime')
          .then(function(response) {
              return response.json()
          }).then(function(json) {
              var data = json;
              console.log(data[0]);
              console.log(data[0].username);
              component.setState({
                  data: json
              })
          })

  }




  render() {
    return (
      <div>
        <h1>elo{this.state.data[0].username}</h1>


      </div>
    );
  }
}

const docs = document.getElementById('root');

ReactDOM.render( <Main/> , docs);

1 个答案:

答案 0 :(得分:5)

原因是首先渲染这个&#34; this.state.data [0] .username&#34;未设置,直到响应从API调用返回。

你的渲染方法中的这样的东西应该可以工作:

render() {
    var someData = this.state.data[0].username || "";
    return (
      <div>
        <h1>elo{someData}</h1>


      </div>
    );
  }