【发布时间】:2019-11-24 16:23:14
【问题描述】:
我知道有类似的问题,但我找不到答案。
首先,如果我做错了什么,请告诉我
我需要使用来自 API 调用的数据填充我的状态。上面的代码运行良好:
export const GetPlanets = async () => {
const planets = await axios.get(`${BASE_URL}`).catch((e) => {
console.error(e);
})
return planets.data.results
}
但后来我需要从一个 json 响应文件中对多个链接进行第二次调用,并且我设法使其工作(但不知道这是否是正确的方法)
const GetPlanets = async () => {
let planetas = {}
await axios.get(`${PLANETS_URL}`)
.then((p) => {
planetas = p.data.results
return axios.get(`${FILMS_URL}`)
}).then((f) => {
planetas.films.forEach((v, i) => {
planetas[i].film = f
})
})
})
.catch((e) => {
console.error(e);
})
return planetas
}
这是我的组件文件,我尝试在其中获取对象,就像我之前做的那样
useEffect(() => {
const fetchPlanetas = async () => { // ME TRYING...
const planetas = await GetPlanets()
setPlanetas(planetas)
setToShow(planetas[0])
};
fetchPlanetas()
}, [])
但我得到的只是未定义
【问题讨论】:
-
在您的第一个代码块中,您将数据获取的结果分配给名为
planets的const,但随后返回planetas.data.results,但planetas未在该范围内声明。我假设这是一个错字?如果没有,这可能是您所看到问题的线索...... -
是的,这是一个错字,我不再使用这个代码了
-
首先,我建议迁移到 fetch 和 whatwg-fetch polyfill。不再需要 axios 或任何其他试图找出
AJAX混乱的库。 尤其是如果你使用 ES6 概念,例如const和let -
与
fetchjson 就像const response = await fetch('my_url'); const result = await response.json()一样简单 -
一位老师说 axios 主要被公司使用(至少在我的国家),这就是我使用它的原因
标签: javascript reactjs ecmascript-6 axios