我正在获取铁路api,但是api要求日期为dd-mm-yyyy格式,因此我将其从mm-dd-yyyy格式转换为dd-mm-yyyy,现在单击“提交”按钮没有火车数据已获取。
这是代码。
searchTrain(e) {
e.preventDefault();
let journeyDate = this.dateFormatter(this.state.date)
this.setState({ date: journeyDate }, () => console.log(this.state.date))
this.fetchTrainList();
//this.setState({ to: '', from: '', date: '' })
}
fetchTrainList() {
fetch(`https://api.railwayapi.com/v2/between/source/${this.state.from}/dest/${this.state.to}/date/${this.state.date}/apikey/sch2lk34nw/`)
.then(res => res.json())
.then(data => {
this.setState({ trainList: data }
, () => console.log(this.state.trainList)
)
})
}
onChangeTrain(e) {
this.setState(
{ [e.target.id]: e.target.value }
, () => console.log(this.state)
);
}
dateFormatter(date) {
const options = { year: 'numeric', month: '2-digit', day: '2-digit' };
return new Date(date).toLocaleDateString('en-IN', options).split('/').join('-');
}
答案 0 :(得分:0)
您的网络日志怎么说?我尝试使用https://railwayapi.com/api/#train-route的卷发效果,但得到500分的回复。
可能不会成为您的问题
答案 1 :(得分:0)
this.setState
是异步的,因此应在this.fetchTrainList()
回调内调用this.setState
,如下所示:
this.setState({
date: journeyDate,
}, () => {
this.fetchTrainList()
});
或者您也可以按以下步骤进行内联:
this.setState({ date: journeyDate }, () => this.fetchTrainList());