我正在获取狗的API,它返回一个对象。
我想在转换之前在对象中进行更改
它到一个数组并setState()。
问题是它返回“未定义”。
我认为该功能还可以,因为如果我在提取程序之外运行,它确实可以工作,或者我在这里丢失了某些东西?

componentDidMount() {
    fetch("https://dog.ceo/api/breeds/list/all")
      (res => res.json())
      .then(res => res.message)
      .then(res => this.processReq(res)) // <--- undefined
      .then(res => Object.entries(res))
      .then(res => this.setState({ allBreeds: res }));
  }

  processReq = breed =>
    Object.keys(breed).forEach(key => {
      if (key === "australian") {
        breed["shepherd"] = [key];
        delete breed[key];
      } else if (key === "germanshepherd") {
        breed["shepherd"].push("german");
        delete breed[key];
      }
    });


有没有一种在获取过程中操作对象的方法?
也许将setState()作为数组然后处理它会更容易吗?

最佳答案

实际上forEach函数不返回任何内容,因此这就是为什么给出undefined的原因,您应该将其更改为:

processReq = breed => {
    Object.keys(breed).forEach(key => {
      if (key === "australian") {
        breed["shepherd"] = [key];
        delete breed[key];
      } else if (key === "germanshepherd") {
        breed["shepherd"].push("german");
        delete breed[key];
      }
    });
    return breed;
}

09-12 21:12