我一直在玩pokeAPI,我已经对api进行了AJAX调用。当我调用api时,一切正常,我可以导航到我想要的值。但是,每当有一个数组我试图获取一个值形式时,它就会返回此错误。
当我尝试通过数组而没有别的时候会发生这种情况。这就是我以前称之为api的东西。
fetch('http://pokeapi.salestock.net/api/v2/pokemon-species/' + this.state.pokemonValue + '/')
.then(results => {
return results.json();
}).then(data => {
this.setState({pokemonData: data});
});
这是我试图在api中访问的数组。
我到达了这个数组,它带来了一个名为“names”的对象数组
我正在访问的JSON文件是
http://pokeapi.salestock.net/api/v2/pokemon-species/2/
const pokemon = this.state.pokemonData;
console.log(pokemon.names);
然而,当我试图找到其中一个数组项时,它会给出错误...
console.log(pokemon.names[1]); // === ERROR
答案 0 :(得分:1)
获取代码工作正常,不会为数组索引抛出错误。
fetch('http://pokeapi.salestock.net/api/v2/pokemon-
species/2/').then(results => {
return results.json();
}).then(data => {
console.log(data.names[1]);
})
问题在于各州。由于您在promise then语句中使用了setState,因此then和setState都是异步函数。在setState设置状态pokemonData
之前,您可能已调用console.log。理想情况下,您应该console.log(pokemon.names)
收到错误,因为pokemon.names
未定义。但这取决于指令的执行时间。多次执行以确保这是实际原因。如果您不是在寻找DOM更新,请尝试使用类或全局变量而不是设置状态。