javascript - 在获取期间处理对象返回 'undefined'

标签 javascript reactjs

我正在获取狗的 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;
}

关于javascript - 在获取期间处理对象返回 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59989609/

相关文章:

javascript - Bitbucket 管道和非 headless Puppeteer?

javascript - V-for 单击所有按钮而不是仅单击一个按钮

javascript - JavaScript 数组中未定义的值

javascript - 基于文本输入的重定向不区分大小写

javascript - 在 react 中,当 child 改变时如何引起注意?

javascript - 无法检索 Angularjs $scope 数组最后一个对象

javascript - 渲染时 map 内的箭头功能。 react

javascript - 静态站点生成 (SSG) 与服务器端渲染与客户端渲染

css - 如何在初始服务器端渲染后立即使用 React + NextJS 重新渲染客户端?

reactjs - React router - 如果在 url 中输入父组件路径,如何重定向到子组件