【发布时间】:2021-06-06 05:46:00
【问题描述】:
从 API 我得到一个包含 40 个对象的数组。我只想显示 5 个项目。所以我的想法是只显示第 4 个项目,并跳过其他项目。我的想法是先过滤数组,如果满足条件,就会返回数据,可能使用map?
const Weather = () => {
const [key, setKey] = useState([]);
const [data, setData] = useState({
city: "",
country: ""
})
const API = '28876c50c36221de5f008fa752cb3f1a';
const dataWeather = async () => {
await axios.get(`https://api.openweathermap.org/data/2.5/forecast?q=${data.city},${data.city}&appid=${API}`)
.then(res => {
console.log(res.data)
// const {resData} = res.list;
const { list: resData } = res.data
console.log(resData);
setKey(resData);
})
}
const handleClick = (e) => {
const { name, value } = e.target;
setData(prev => {
return {
...prev,
[name]: value
}
})
}
const trigger = (e) => {
e.preventDefault();
dataWeather()
}
return (
<Form>
<Container>
<Form>
<Form.Row>
<Col>
<Form.Control placeholder="City" onChange={handleClick} name="city" value={data.city} />
</Col>
<Col>
<Form.Control placeholder="Country" onChange={handleClick} name="country" value={data.country} />
</Col>
<Button variant="primary" type="submit" onClick={trigger}>
Submit
</Button>
</Form.Row>
</Form>
<div className="grid">
{
key !== null && (
key.map(dataMap =>
if (dataMap.dt_txt % 4 === 0) {
<Card data={dataMap.weather[0].description} date={dataMap.dt_txt} imgSrc={dataMap.weather[0].icon} temp={Math.floor(dataMap.main.temp - 273.15)} />
}
)
)
}
</div>
</Container>
</Form>
)
}
【问题讨论】:
-
我认为你应该分享工作代码,因为这看起来不起作用。
-
对不起,我只发布特定的
标签: javascript arrays reactjs loops