Как перенаправить страницу в react после проверки формы

#javascript #reactjs #express

#javascript #reactjs #экспресс

Вопрос:

Я новичок в JavasScript, поэтому то, что у меня есть, вероятно, не самый лучший способ, так что, надеюсь, кто-нибудь сможет меня поправить! У меня есть форма, которая отправляет данные в express через вызов ajax.

 
<Form  name="FlightForm" id="FlightForm"  action="/search" onSubmit={this.onSubmit}  >



      <div >
 <label>FROM</label>
 <input required  type='text' name='originOne' id="originOne"  onChange={this.setState.originOne}  className="form-control" placeholder="Departing from"/>
        </div>


<div>
  Departure Date 
 <DatePicker className="form-control" required minDate={new Date()} name='date' selected={this.state.startDate} onChange={this.handleChange}/>

</div>



    <p><button type="submit" name="search" id="search" value="true" onSubmit={this.loading()} className="w3-button w3-dark-grey">Search for destinations</button></p>


</Form>

  
 
export class Home extends React.Component {

  constructor(props) {
    super(props);

   this.state = { originOne: '', originTwo: '', redirectToResult: false, startDate: new Date(), route:'', loader:false};


      this.onSubmit= this.onSubmit.bind(this);
      this.handleChange= this.handleChange.bind(this);
      this.setMulti=this.setMulti.bind(this);
      this.loading=this.loading.bind(this);

    }


onChange = (e) => {
    this.setState({
       originOne: e.target.value, originTwo: e.target.value, 
       route:e.target.value});
    };


 setMulti  = event => {
         this.setState(
             {route: event.target.value});
     };

 onSubmit = (e) => {

     e.preventDefault();
     const { originOne, originTwo , route} = this.state;
    this.setState({ loading : true});
     {this.loading()}
};

 handleChange(date){
     this.setState({
         startDate:date
     });
 }
  

На данный момент у меня есть вызов ajax для отправки данных на сервер, на который ссылается index.html страница.

 $(document).ready(function(){
        // click on button submit
        $("#search").on('click', function(){
            // send ajax
            console.log($("#FlightForm").serialize()) ;
            $.ajax({
                url: '/', // url where to submit the request
                type : "POST", // type of action POST || GET
                dataType : 'json', // data type
                data : $("#FlightForm").serialize(), // post data || get data
                success : function(data, status, xhr ) {


                   window.location.replace("http://localhost:3000/searching");

                },
                error: function(xhr, resp, text) {
                    console.log("Error happening");
                    window.location.replace("http://localhost:3000/error");
                }
            })
        });
    });
  

Я структурировал ее для перенаправления на страницу поиска с помощью загрузочного счетчика после отправки, однако это переопределяет обязательные поля для проверки формы.

Каков наилучший способ отправки формы после проверки формы и перенаправления на следующую страницу? Любая помощь будет принята с благодарностью, спасибо!