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