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