更改日期格式后无法获取API

时间:2019-02-07 07:00:41

标签: javascript reactjs api

我正在获取铁路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('-');
  }

2 个答案:

答案 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());