javascript - React 获取多个相互依赖的 API (async/await)
问题描述
我正在做一个项目,我遇到了这个错误
“response.json 不是函数”
从第一个 API 调用中获取数据后,我可以得到纬度和经度。但是在我将第二个 API 嵌套到第一个 API 之后,问题就出现了。
我不确定我在这里做错了什么。无论 API 是否相互依赖,有什么方法可以解决这个问题?提前致谢
const Form = () => {
const [search, setSearch] = useState('')
const [location, setLocation] = useState('')
// const [isLoading, setIsLoading] = useState(false)
useEffect(() => {
geocode()
}, [location])
const geocode = async () => {
if(location) {
const response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${location}.json?limit=1&access_token=${ACCESS_TOKEN}`)
const data = await response.json()
const lat = data.features[0].center[1]
const log = data.features[0].center[0]
console.log(data.features[0].center[1], data.features[0].center[0])
forecast(lat,log)
}
}
const forecast = async (latitude, longitude) => {
const response = await `https://api.darksky.net/forecast//${API_KEY}/${latitude},${longitude}`
const data = await response.json()
console.log(data)
}
const getSubmit = e => {
e.preventDefault()
setLocation(search)
setSearch('')
}
return (
<form onSubmit={getSubmit}>
<input
type="text"
name="location"
value={search}
onChange={e => setSearch(e.target.value)}
placeholder="Enter Location..."/>
<button type="submit">Get weather!</button>
</form>
)
}
解决方案
你实际上并没有发送你的请求,
await `https://api.darksky.net/forecast//${API_KEY}/${latitude},${longitude}`
它应该是
await fetch(`https://api.darksky.net/forecast//${API_KEY}/${latitude},${longitude}`)
推荐阅读
- node.js - nodejs和nextjs版本更新后的session问题
- tomcat - Tomcat 活动会话未与 LoadBalancer 上的活动连接总数对齐
- android - 如何从 Edittext 获取 SpannableString
- python - 在 Pandas 中捕获列的状态更改信息
- javascript - 下拉重置角度 ng-select 时删除无效状态
- regex - IDLE 中的正则表达式语法错误,但在我的 Python 程序中却没有?
- javascript - responsiveslides 仅使用 https 显示我的第一张图片,使用 http 可以正常工作
- python - 'CountVectorizer' 对象没有属性 'toarray'
- javascript - 从 json 获取数据并在拆分后将其发送到图表
- java - 私有方法上的 Javax 验证不会被触发