Я довольно новичок в React, и у меня проблема с обработкой данных из REST API с помощью React.Я получаю карты Pokemon от API Pokemon TCG.Возвращенные данные - это JSON, который содержит все виды информации о карте, включая URL-адрес изображения.Я пытаюсь отобразить список карт покемонов, но не могу:
Поскольку я занимаюсь, я делаю все в файле App.js :
import React, { Component } from 'react';
import './App.css';
import axios from 'axios';
class App extends Component {
constructor() {
super();
this.state = {
pokemon: "",
//url: "https://api.pokemontcg.io/v1/cards?name=",
listOfPokeImageUrls: []
}
}
lookupPokemon() {
this.setState({
listOfPokeImageUrls: []
})
this.getData();
}
getData() {
axios.get(`https://api.pokemontcg.io/v1/cards?name=squirtle`)
.then(response => {
response.data.cards.forEach(element => {
this.state.listOfPokeImageUrls.push(element.imageUrl);
});
//this.forceUpdate();
})
}
render() {
console.log(this.state.listOfPokeImageUrls);
let imageList = this.state.listOfPokeImageUrls.map(
(element) => { return <div><img src={element.imageUrl} alt=""></img></div> }
);
console.log(imageList);
return (
<div className="App">
<input type="text"></input>
<button onClick={this.lookupPokemon.bind(this)}>Fetch pokemoncards</button>
{imageList}
</div>
);
}
}
export default App;
Проблема, с которой я сталкиваюсь, заключается в том, что let imageList всегда остается пустым после сопоставления.Поэтому карты не отображаются на моем экране.Я регистрирую некоторую информацию, во-первых, массив URL-адресов изображений и, во-вторых, массив, который должен содержать элементы div и img.Когда я смотрю в консоль, я получаю следующее:
Почему это не отображает изображения с элементами div, как я ожидаю?Мне не хватает базовых знаний о React?
Заранее спасибо
РЕДАКТИРОВАТЬ: Благодаря комментариям ниже я исправил это, я забыл использовать setState в getDataМетод:
Следовательно, он не работал.