【发布时间】:2019-12-31 17:14:17
【问题描述】:
我正在学习 React,我有一个通过 API 请求信息的解决方案,当有响应时它会设置状态,但是在呈现我的结果时它只在屏幕上显示最后一个响应,
App.js
import React from 'react';
import Tiles from './components/Tiles'
import Form from './components/Form'
import WaterData from './components/WaterData'
class App extends React.Component{
state = {
station_name: undefined,
water_value: undefined,
dateTime: undefined
}
getData = async (e) => {
e.preventDefault();
const name = e.target.elements.name.value;
const api_call = await fetch(`https://waterlevel.ie/geojson/latest/`)
.then(response1 => {
response1.json().then(data =>{
Array.from(data.features).forEach(element => {
if(element.properties['station.name'] === name){
this.setState({
station_name: element.properties['station.name'],
water_value: element.properties['value'],
dateTime: element.properties['datetime'],
});
}
})
});
});
}
render(){
return(
<div>
<Tiles />
<Form loadData={this.getData}/>
<WaterData
station_name={this.state.station_name}
water_value={this.state.water_value}
dateTime={this.state.dateTime}
/>
</div>
)
}
}
export default App;
WaterData.js
import React from 'react';
const Weather = (props) => {
console.log(props)
return(
<li>
<p>Location {props.station_name}</p>
<p>Value {props.water_value}</p>
<p>Date Time: {props.dateTime}</p>
</li>
)
}
export default Weather;
有人可以向我解释为什么没有显示 4 个响应吗?
【问题讨论】:
-
您是否尝试过在
.forEach循环中设置断点?我很想知道页面是否会随着每次迭代而变化。 -
如果您将传入数据直接设置为状态,它会将循环中的最后一个数据设置为您的状态。您必须将数据指定为 state 中的数组,并在渲染时使用
map方法对其进行循环。 -
是的,每次迭代都会覆盖显示
标签: javascript reactjs api