javascript - 无法读取地图未定义反应的属性
问题描述
我是一个新手反应学习者,在这里尝试进行 api 调用以显示天气详细信息列表(对于测试用例,我正在尝试获取“app_max_temp”)但我收到错误,因为“无法读取在 SearchCity 未定义的地图属性(SearchCity .js:29)" 。我已经在邮递员中尝试过该网址,并且在提供响应数据时工作得非常好。我在下面有我的代码。我无法弄清楚出了什么问题以及如何解决它。任何帮助,将不胜感激。提前致谢。
import React,{useState} from 'react';
export default function SearchCity(){
const[query,setQuery] = useState('');
const[weatherResponse,setWeatherResponse] = useState([]);
const searchCity = async (e) =>{
e.preventDefault();
const api_key ="YourApiKey";
const url = `https://api.weatherbit.io/v2.0/forecast/daily?city=${query}&key=${api_key}`;
try{
const res = await fetch(url);
const data = await res.json();
console.log(data.results);
setWeatherResponse(data.results);
}
catch(error){
console.error(error);
}
}
return(
<>
<form className="form" onSubmit={searchCity}>
<label className="cityTitle" htmlFor="query">City Name : </label>
<input type="text" value={query} name="query" onChange={(e)=>setQuery(e.target.value)} />
<button className="btnSearch" type="submit">Search</button>
</form>
{weatherResponse.map(res=>(
<p>{res.app_max_temp}</p>
)
)}
</>
)
}
解决方案
Weatherbit 16 天预报 API 文档
Weatherbit 16 天预报 Swagger UI
API 在属性数据中返回这些值,而不是结果:
console.log(data.data);
setWeatherResponse(data.data);
确保您拥有正确的 API 密钥(当然不要在此处发布)。
推荐阅读
- java - 如何通过 TDLib 从 Telegram 获取频道的数据列表?
- javascript - Vue:当我更改控制台日志时,数据仅在第一次渲染时传递给孩子,在刷新时被删除
- java - Websphere 超时异常
- php - 用购物车总数和订阅期替换 WooCommerce“下订单”按钮文本
- docker - docker run 和 docker-compose 结果不同?
- html - 为什么我不能根据 CSS 中的文本调整图像大小?
- c# - 如何生成不连续重复 3 次的随机 int?
- r - 按组划分的因子水平
- activex - 是否有对 Webview2 控件的 ActiveX 支持
- android - Android Autofill 执行回调