JSON数组调用始终返回错误

时间:2018-02-08 04:03:22

标签: arrays json

我一直在玩pokeAPI,我已经对api进行了AJAX调用。当我调用api时,一切正常,我可以导航到我想要的值。但是,每当有一个数组我试图获取一个值形式时,它就会返回此错误。

enter image description here

当我尝试通过数组而没有别的时候会发生这种情况。这就是我以前称之为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中访问的数组。

enter image description here

我到达了这个数组,它带来了一个名为“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

1 个答案:

答案 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更新,请尝试使用类或全局变量而不是设置状态。