Возврат данных из Axios - PullRequest
       24

Возврат данных из Axios

0 голосов
/ 27 марта 2020

Я пытаюсь вернуть ответ от вызова API ios axe. Я не совсем понимаю, что такое обещание, и все учебники / информация, которую я нахожу, они только регистрируют ответ, я хочу его вернуть.

Вот что у меня есть, но когда я вызываю getPokemon, оно не определено.

const axios = require('axios');

const getPokemon = () => {
    axios.get('https://pokeapi.co/api/v2/pokemon/')
    .then(function (response) {
        console.log("Response:", response.data.results);
        return response.data.results;
    })
    .catch(function (error) {
        return null;
    });
}

export {getPokemon};

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Ну, во-первых, я предлагаю вам прочитать об обещаниях. Хороший метод для достижения того, что вам нужно, с помощью синтаксиса async / await, проверьте следующий код:

const axios = require('axios');

const getPokemon = async () => {
    try{
       let res = await axios.get('https://pokeapi.co/api/v2/pokemon/');
       return res.data.results;
    }
    catch(error){
      return null //that's what you did in your code.
    }
}

export {getPokemon};
0 голосов
/ 27 марта 2020

Если это приложение React, то вы хотите, чтобы ваш Ax ios позвонил в componentDidMount. Ax ios автоматически возвращает обещание.

class Example extends Component {
  constructor(props) {
    super(props);
    this.state = {
      data: ""
    };
  }

  componentDidMount() {
    axios
      .get("https://pokeapi.co/api/v2/pokemon/")
      .then(res => {
        console.log(res);
        this.setState({
          data: res.data.results
        });
      })
      .catch(err => {
        console.log(err);
      });
  }
  render() {
    let pokemon = this.state.data;
    let display = Object.values(pokemon).map((item, key) => {
      return (
        <div>
          <p>{item.name}</p>
          <p>{item.url}</p>
        </div>
      );
    });

    return (
    <div>{display}</div>
    );
  }
}

export default Example;

При таком выполнении отправляется запрос Ax ios после загрузки приложения React и установки данных JSON в состояние компонента. Вы должны иметь возможность доступа к данным JSON через this.state.data.

. Проверьте Пример Codepen с рабочим вызовом API .

.
...