問題描述
在第二個 API 中使用來自第一個 API 的信息 ‑ React (Using information from the first API in the second one ‑ React)
大家!
我有一個小問題。我需要獲取兩個 API:我需要調用第一個,然後在第二個中使用來自第一個的信息。你能幫我解決一下嗎?這是我當前的代碼,但我無法以某種方式獲取第一次獲取的結果(我可以在控制台和其他東西中看到,所以這不是問題;我只需要從那裡獲取數據)。
function App() {
const [query, setQuery] = useState('');
const [weather, setWeather] = useState({});
const search = evt => {
if (evt.key === "Enter") {
fetch(${api.base}forecast?q=${query}&units=metric&APPID=${api.key}
)
.then(res => res.json())
.then(result => {
setWeather(result);
setQuery('');
console.log(result);
})
.then((result) => {
const data = fetch(${api.base}onecall?lat=${result.city.coord.lat}&lon=${result.city.coord.lon}&APPID=${api.key}
)
console.log(data)
})
}
}
</code></pre>
參考解法
方法 1:
You need to return the result in then
of promise
since it creates a new promise out of returned value.
const search = evt => {
if (evt.key === "Enter") {
fetch(`${api.base}forecast?q=${query}&units=metric&APPID=${api.key}`)
.then(res => res.json())
.then(result => {
setWeather(result);
setQuery('');
console.log(result);
return result; // add return statement
})
.then((result) => {
const data = fetch(`${api.base}onecall?lat=${result.city.coord.lat}&lon=${result.city.coord.lon}&APPID=${api.key}`)
data.then((res)=>res.json())
.then(result=>{
console.log(result)
})
})
}
}
(by MrVoland、Sarthak Aggarwal)
參考文件