Попытка обновить данные в моем локальном хранилище одним нажатием кнопки, но для обновления требуется 2 клика на странице. - PullRequest
0 голосов
/ 11 декабря 2018

Не знаю, почему, когда нажимается кнопка сохранения данных, мне нужно нажать ее два раза для обновления данных, getAirlinesUpdated - это функция, которая сохраняет данные в JSONв моем локальном хранилище с использованиемactjs.

Извлечение обновленных данных с последующим сохранением в локальном хранилище JSON

 getAirlinesUpdated = _ => 
 {
              return new Promise((resolve, reject) => {
                fetch(`http://ca-fpscfb2:4000/Airlines?dashboardID=${this.state.dashboardID}`)
                .then(response => response.json())
                .then( response =>  {
                  return localStorage.setItem('airlinesUpdatedData', JSON.stringify(response.data))
                 })

                .catch((err) => { return reject(err) });
            });
 }

Сохранение данныхфункция

handleSaveData(){


  if(this.state.live == 1)
  {

    fetch(`http://ca-fpscfb2:4000/SaveDataRedFlags?dashboardID=${this.state.dashboardID}&airlineID=${this.state.airlineID}&redFlags=${Base64.encode(this.state.redFlagContent)}`) &&
    fetch(`http://ca-fpscfb2:4000/SaveDataMaintenanceReleases?dashboardID=${this.state.dashboardID}&airlineID=${this.state.airlineID}&maintenanceReleases=${Base64.encode(this.state.maintenanceContent)}`) &&
    fetch(`http://ca-fpscfb2:4000/SaveDataNotes?dashboardID=${this.state.dashboardID}&airlineID=${this.state.airlineID}&notes=${Base64.encode(this.state.notesContent)}`) &&
    fetch(`http://ca-fpscfb2:4000/SaveDataStatus?dashboardID=${this.state.dashboardID}&airlineID=${this.state.airlineID}&status=${Base64.encode(this.state.selectedOption.value)}`) &&
    fetch(`http://ca-fpscfb2:4000/SaveDataSummary?dashboardID=${this.state.dashboardID}&airlineID=${this.state.airlineID}&summary=${this.state.summaryLiveOn}`) && 
    fetch(`http://ca-fpscfb2:4000/SaveDataStatusColor?dashboardID=${this.state.dashboardID}&airlineID=${this.state.airlineID}&statuscolor=${this.state.selectedOption.label}`)  
    .then( 
      this.setState({showSaveModal: true}),
      setTimeout(() => {
        this.handleSaveDataHide();

      }, 3000)
    )
  }
  else
  {
    fetch(`http://ca-fpscfb2:4000/SaveDataRedFlags?dashboardID=${this.state.dashboardID}&airlineID=${this.state.airlineID}&redFlags=${Base64.encode(this.state.redFlagContent)}`) &&
    fetch(`http://ca-fpscfb2:4000/SaveDataMaintenanceReleases?dashboardID=${this.state.dashboardID}&airlineID=${this.state.airlineID}&maintenanceReleases=${Base64.encode(this.state.maintenanceContent)}`) &&
    fetch(`http://ca-fpscfb2:4000/SaveDataNotes?dashboardID=${this.state.dashboardID}&airlineID=${this.state.airlineID}&notes=${Base64.encode(this.state.notesContent)}`) &&
    fetch(`http://ca-fpscfb2:4000/SaveDataStatus?dashboardID=${this.state.dashboardID}&airlineID=${this.state.airlineID}&status=${Base64.encode(this.state.selectedOption.value)}`) &&
    fetch(`http://ca-fpscfb2:4000/SaveDataSummary?dashboardID=${this.state.dashboardID}&airlineID=${this.state.airlineID}&summary=${this.state.summaryLiveOff}`) &&
    fetch(`http://ca-fpscfb2:4000/SaveDataStatusColor?dashboardID=${this.state.dashboardID}&airlineID=${this.state.airlineID}&statuscolor=${this.state.selectedOption.label}`) 
    .then( 
      this.setState({showSaveModal: true}),
      setTimeout(() => {
        this.handleSaveDataHide();
      }, 3000)
    )
  }
  this.getAirlinesUpdated();
}

Кнопка сохранения данных

 render(){
    div className="pull-right">
                      <Button style={{height: 47}} onClick={this.handleSaveData} bsStyle="blue-grey"><h5> Save Data </h5></Button> 
                      </div>
    }
...