开发者问题收集

使用 React.JS 获取 API 数据时出现问题

2018-01-16
514

我正在开发一个简单的 React Web 应用,但在查看从此模拟 API 中提取的某些数据时遇到了问题: https://randomuser.me/api/

这是我的代码:

import React, { Component } from 'react';

class ApiTest extends Component {
    constructor() {
      super();
      this.state = {
        names: [],
      };
    }

    componentDidMount() {

  fetch('https://randomuser.me/api/?results=10')
  .then(results => {
    return results.json();
  }).then(data => {
    let names = data.results.map((name) => {
      return(
        <div key={name.results}>
           {name.title}
        </div>
      )
    })
    this.setState({names: names});
    console.log("state", this.state.names);
  })
}

  render() {
      return (
        <div className="App">

          <div className="container2">
            <div className="container1">
              {this.state.names}   
            </div>
          </div>

        </div>
      );
    }
  }

  export default ApiTest;

我能够根据我找到的所有这些教程提取图片( https://blog.hellojs.org/fetching-api-data-with-react-js-460fe8bbf8f2 )但我似乎无法显示任何其他内容。我似乎没有收到任何错误,并且我在控制台中看到了这些对象。我做错了什么?谢谢大家!!!

1个回答

将 jsx 放入组件状态确实不是一个好主意。状态应该由纯数据组成。然后您可以在 render() 函数内以灵活的方式转换数据:

https://codesandbox.io/s/qqy9l78l06

import React, { Component } from "react";

class ApiTest extends Component {
  constructor() {
    super();
    this.state = {
      people: []
    };
  }

  componentDidMount() {
    fetch("https://randomuser.me/api/?results=10")
      .then(results => results.json())
      .then(data => this.setState({ people: data.results }));
  }

  render() {
    console.log(this.state);
    return (
      <div className="App">
        <div className="container2">
          <div className="container1">

            {this.state.people.map(person => (
              <div>{person.name.first}</div>
            ))}

          </div>
        </div>
      </div>
    );
  }
}

export default ApiTest;
Daniel Khoroshko
2018-01-16