问题描述:在本地直接使用高德的天气,跑起来没问题,部署线上后请求失败,因为自动拼接了项目的基地址,但如果改全路径肯定是跨域的。
然后查到通过JSONP来解决,可以直接看这个博客的,写的特别详细,我只是自己记录一下
React通过jsonp获取高德在线天气数据_react在线获取天气和温度_神奇洋葱头的博客-CSDN博客
先安装依赖 npm i jsonp
import jsonp from "jsonp";
//请求高德天气
export const reqWeather = (cityCode)=>{
return new Promise((resolve,reject)=>{
const url = `https://restapi.amap.com/v3/weather/weatherInfo?key=你自己高德的key&city=${cityCode}`
jsonp(url,{},(err,data)=>{
console.log("reqWeather=",err,data);
if(data.status==="1"){
//请求成功,拿到数据
const res = data
resolve(res)
}else{
console.log('请求失败');
//请求失败
}
})
})
}
在需要使用的文件导入
import {reqWeather} from "../jsonp"
useEffect(()=>{
reqWeather("420100").then(res=>{
拿到结果你要做的操作
})
},[])