反应传播不可迭代实例的无效尝试

时间:2019-02-24 18:50:47

标签: reactjs fetch setstate

我不断收到此错误: TypeError:散布不可迭代实例的无效尝试  当我试图在这里获取一些数据时:

export const genres = () => {
  const apiUrl = "http://localhost:3000/api";

  return fetch(apiUrl + "/genres")
    .then(response => response.json())
    .then(data => {
      const res = Array.from(data.results);
      return res;
    });   
};
console.log(genres)

export function getGenres() {
  return genres().then(res => res.filter(g => g));
}

并在此处更新组件的状态:

componentDidMount() {
    const genres = [{ _id: "", name: "All Genres" }, ...getGenres()];
    this.setState({ genres});

  }

我知道问题出在流派返回一个对象,而状态应该是一个数组的事实,但是我不确定如何解决这个问题。

谢谢

1 个答案:

答案 0 :(得分:0)

getGenres返回了一个承诺,因此您需要等待其解决后才能尝试将其返回的状态置于状态中。

componentDidMount() {
  getGenres().then(res => {
    const genres = [{ _id: "", name: "All Genres" }, ...res];
    this.setState({ genres });
  })
}