【发布时间】:2022-01-21 12:52:48
【问题描述】:
我正在使用 React 在天气应用程序中工作,但我遇到了这个错误并且无法解决它
"TypeError: oldCities 不可迭代"
这是我的完整代码:
import React, { useState } from 'react';
import './App.css';
import Nav from './components/Nav';
import Cards from './components/Cards.jsx'
export default function App() {
const [cities, setCities] = useState()
console.log(setCities)
const apiKey = 'api_key'
function onSearch(city){
fetch(`http://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric`)
.then(response => response.json())
.then(json => {
if(json.main !== undefined){
const city = {
min: Math.round(json.main.temp_min),
max: Math.round(json.main.temp_max),
id: json.id,
img: json.weather[0].icon,
wind: json.wind.speed,
temp: json.main.temp,
name: json.name,
logitude: json.coord.lon,
latitude: json.coord.lat
};
setCities(oldCities => [...oldCities, city])
}
else{
alert('Ciudad no encontrada')
}
})
.catch(e => console.log(e))
}
return (
<div className="App">
{ /* Tu código acá: */ }
<Nav onSearch={onSearch} />
<Cards cities={cities} />
</div>
);
}
关于如何以不同方式将数据添加到 setCities 的想法?
【问题讨论】:
-
请说明您在哪里创建和设置 oldCities
-
在某些时候它不再是一个可迭代的项目
-
我在 setCities 的箭头函数中创建 oldCities,使用 console.log(oldcities) 显示为“未定义”,但问题是按照教程它应该可以在没有和问题的情况下工作跨度>
-
oldCities 的类型是数组吗??
-
是的,但 oldCities 是状态变量城市的旧值。您必须在某处展示它
标签: javascript reactjs promise frontend es6-promise