未捕获的类型错误:无法读取未定义的属性(读取“forEach”) - OpenWeather
2022-08-15
542
我是 React 中的天气应用项目新手。在这种情况下,我使用的是 OpenWeatherAPI。
我的问题是,当我尝试使用 forEach 时,它会出现如下所示的错误。
ApiCall.jsx:15 Uncaught TypeError: Cannot read properties of undefined (reading 'forEach')
这是我的 Header 组件:
import ApiCall from './ApiCall';
function Header() {
const cities = ["İstanbul", "Ankara", "İzmir"]
return (
<div>
<div className="header">
<select name="selection">
<option value="istanbul">{cities[0]}</option>
<option value="ankara">{cities[1]}</option>
<option value="izmir">{cities[2]}</option>
</select>
</div>
<ApiCall getCities={cities} />
</div>
)
}
export default Header
这是我的 ApiCall 组件:
import axios from "axios"
import { useEffect, useState } from "react"
function ApiCall({ getCities }) {
const[data, setData] = useState([])
useEffect(() => {
axios(`https://api.openweathermap.org/data/2.5/forecast?q=${selectCity}&appid=c681e6e33ec339728fdf88e0b24a2a01`)
.then(res => setData(res.data))
.catch(err=> console.log(err))
})
const { city, list } = data
const selectCity = getCities.array.forEach((element) => {
if (city.name === element) {
return element
}
});
return (
null
)
}
export default ApiCall
所有答案都将不胜感激。
2个回答
foreach 应该是这样的
getCities.forEach
而不是
getCities.array.forEach
你怎么看?
如果 getCities 是一个数组,你必须对它使用 forEach 而不是使用 .array.forEach
Asad raza
2022-08-15
似乎您尝试使用作为组件属性获取的城市 (
getCities
) 来过滤所有可用的城市。
由于
getCities
是一个数组,您可以直接在其上调用
forEach
函数并循环遍历城市,但由于您想应用过滤器,我认为您最好使用 Javascript 的内置
filter
方法。
const selectCity = getCities.filter((possibleCityName) => {
return city.name === possibleCityName)
});
Eddie
2022-08-15