【发布时间】:2019-09-08 16:32:21
【问题描述】:
我在单个表单提交时向 API 发出多个具有不同参数的异步 GET 请求,并在每次请求后更新状态。
唯一的问题是在之前的请求尚未完成的情况下提交表单。 (即在上一个请求仍在加载时提交表单)。尽管我在表单提交的开头清空了状态,但状态将填充先前请求和新请求的混合。这是因为之前的请求仍在运行。
我尝试取消 axios 但由于状态不断更新,我不清楚如何使用 componentDidUpdate() 或其他方法来中止请求。
<form onSubmit={searchFlights}>
searchFlights = async e => {
e.preventDefault();
this.setState({ flights: []});
//Dummy Data: array of different parameters
onDates = [1,2,3,4];
// Fetch result for each Day
for (let i = 0; i < onDates.length; i++) {
let onDate = onDates[i];
const res = await axios.get(
`API/?date_from=${onDate}`
);
const flightResult = res.data.data[0];
this.setState({
flights: [...this.state.flights, flightResult]
}); //note the state is updating after each loop
}
当在上一个请求运行时再次提交表单时,我希望它停止获取上一个请求,清除状态并仅获取新请求
【问题讨论】:
标签: javascript reactjs get axios