У меня есть функция, настроенная как событие onClick, которое отправляет набор данных обратно в API

#javascript #reactjs #api #onclick #axios

#javascript #reactjs #API #onclick #axios

Вопрос:

У меня есть функция в моем приложении React, настроенная как событие onClick, которое отправляет набор данных обратно в API, а затем мне нужно, чтобы оно перенаправляло на другой URL после завершения отправки данных. Ранее я пытался сделать это, просто обернув кнопку тегом привязки и href, но всякий раз, когда пользователь нажимает на кнопку, она перенаправляется до завершения события onClick. Я включил функцию ниже. Есть идеи о том, как добавить перенаправление после первоначальной логики отправки?

Функция

 this.submitData = () => {
  let temporalDataModel = {
    ...this.state.dataModel,
    SessionId: this.state.customer.SessionId,
    customerId: this.state.customer.CustomerId
  };

  //// This is the logic to send the the data back to my API

  let postUrl = "https://myAPI.com/OfferUpdate";
  axios
    .post(postUrl, temporalDataModel)
    .then(response => {
      console.log(response);
    })
    .catch(err => {
      console.error(err);
    });

  console.log("This is your data...sending...NOW", temporalDataModel);
};
  

Комментарии:

1. Таким образом, вы перенаправляете, когда вызов возвращается …. окно. Расположение. href = «//example.com »

2. @epascarello это было все, что потребовалось, спасибо!

Ответ №1:

Вам нужно переместить свой код публикации в side, затем выполнить функцию, подобную приведенной ниже, поскольку ваш код публикации отсутствует в функции, которую он выполняет, прежде чем api вернет результат.

 axios
  .post(postUrl, temporalDataModel)
  .then(response => {
    console.log(response);
    console.log("This is your data...sending...NOW", temporalDataModel);
  })
  .catch(err => {
    console.error(err);
  });
  

Ответ №2:

Ну, на самом деле ваша функция submitData выполняет асинхронный код… Поэтому, если вы хотите подождать, пока действие не будет выполнено, вам следует перенаправить на другой веб-сайт в результате вашего обещания в then или catch , если произойдет исключение.