#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
, если произойдет исключение.