【发布时间】:2019-02-08 12:25:24
【问题描述】:
从 API 获取数据我正在获取此类数据:
0: {name: "bulbasaur", url: "https://pokeapi.co/api/v2/pokemon-species/1/"}
1: {name: "ivysaur", url: "https://pokeapi.co/api/v2/pokemon- species/2/"}
2: {name: "venusaur", url: "https://pokeapi.co/api/v2/pokemon-species/3/"}
3: {name: "charmander", url: "https://pokeapi.co/api/v2/pokemon-species/4/"}
4: {name: "charmeleon", url: "https://pokeapi.co/api/v2/pokemon-species/5/"}
5: {name: "charizard", url: "https://pokeapi.co/api/v2/pokemon-species/6/"}
为了获得更详细的信息,我需要获取每个 url。我正在尝试使用 Promise.all 并更新状态,但代码不起作用:
class App extends Component {
constructor(props) {
super(props);
this.state = {
pokemons: [],
names: [],
isLoaded: false
};
}
componentDidMount() {
this.loadPokemons();
this.loadPokemonAdditionalInfo();
}
loadPokemons() {
fetch('https://pokeapi.co/api/v2/pokemon-species')
.then(res => res.json())
.then(json => {
this.setState({
isLoaded: true,
names: json.results
})
})
}
loadPokemonAdditionalInfo() {
Promise.all(this.state.names.map(name =>
fetch(name.url)
.then(results => results.forEach(result => result.json())
.then(r => {
this.setState({
pokemons: [...this.state.pokemons, r]
})
}))))
}
}
请指教我做错了什么。
【问题讨论】:
标签: javascript reactjs api fetch es6-promise