【发布时间】:2022-02-11 04:33:25
【问题描述】:
我正在尝试使用axios 从openweathermaps 获取当前温度。
我可以将我的网址放入浏览器中,它工作正常。但是当我尝试使用正确的 url 进行 axios 调用时,它不会调用事件。
以下是相关代码部分:
function Overview() {
const [temperature, setTemperature] = useState('')
const API_KEY = '{apikey}'
const getTemperature = useCallback(async () => {
const url = `https://api.openweathermap.org/data/2.5/weather?lat=${latitude.toFixed(2)}&lon=${longitude.toFixed(
2,
)}&appid=${API_KEY}`
console.log('my provided url is set to:', url)
const response = await axios.get(url)
if (response.data) {
setTemperature(response.data.main.temp)
}
}, [latitude, longitude])
useEffect(() => {
getTemperature().catch(console.error)
}, [getTemperature])
return <>{temperature ? temperature : 'no data'}</>
}
任何关于我哪里出错的帮助都会很棒,因为我只是看不到我的错误!
【问题讨论】:
-
与您的帖子无关:出于安全原因,您可以用伪造的 API 密钥替换或从帖子中删除吗?
-
其他快速问题:为什么要再次等待
await response.data?.main?.temp中的同步响应? API 是否期望编码的 URI 格式? -
我刚刚更新到我原来的,我一直在做一些测试
-
设置用户代理可能会有所帮助,stackoverflow.com/a/67486713/2122822 还尝试查看在有效请求中发送的标头
-
您已经声明了一个名为
setTemperature(const setTemperature = async () => {}) 的函数,但正在尝试调用一个名为 getTemperature (useEffect(() => {getTemperature()}, [latitude, longitude])) 的函数。也许这只是您的示例代码而不是您的实际代码?另请注意,setTemperature已经存在,因为它是您的const [temperature, setTemperature] = useState('');的一部分
标签: javascript reactjs typescript async-await axios