【发布时间】:2022-01-04 08:22:17
【问题描述】:
在我的基于类组件的 react 应用程序中,我的响应 API 来自几个 滞后 后的开放天气修复。 这是我的状态
class Weather extends Component {
constructor(props) {
super(props);
this.state = {
weatherData: undefined,
weatherDescription: undefined,
};
}
我的想法是,当我的 componentDidMount, 从openWeather获取天气API并将其设置为状态
componentDidMount() {
axios
.get(
`http://api.openweathermap.org/data/2.5/weather?id=someCityId&units=metric&appid=myApiKey`
)
.then((response) => {
if (response.request.status === 200) {
this.setState({
weatherData: response.data.main.temp,
weatherDescription: response.data.weather[0].description,
weatherTextDisplay: this.state.airConditionsText.filter((item)=>{
return item["id"] === response.data.weather[0].id
})
});
}else{throw Error('No internet')}
})
.catch(error => Error.message)
我想在城市变化时更新数据,在componentDidUpdate中再次从openWeather获取数据
componentDidUpdate() {
axios
.get(
`http://api.openweathermap.org/data/2.5/weather?id=someCityId&units=metric&appid=myApiKey`
)
.then((response) => {
if (response.request.status === 200) {
this.setState({
weatherData: response.data.main.temp,
weatherDescription: response.data.weather[0].description,
weatherTextDisplay: this.state.airConditionsText.filter((item)=>{
return item["id"] === response.data.weather[0].id
})
});
}else{throw Error('No internet')}
})
.catch(error => Error.message)
}
但问题是当我的响应收到时,它面临一个延迟,导致数据跳到以前的数据和新的数据,直到它修复为止
【问题讨论】:
-
我至少想显示加载文本,直到我的响应完全得到
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
标签: reactjs api axios openweathermap react-class-based-component