Один из немногих способов добиться этого - использовать асинхронное ожидание, которое разрешит обещания, а затем вернет значение, после чего вы можете очистить значения
1-й подход с использованием асинхронного ожидания
Вот пример
handleSubmit = async event => {
event.preventDefault();
// Promise is resolved and value is inside of the response const.
const response = await API.delete(`users/${this.state.id}`);
//dispatch your reducers
};
Теперь в вашем реагирующем компоненте назовите его
PostData() {
const res = await handleSubmit();
//empty your model and values
}
Второй подход заключается в использовании таймера для проверки значенияизменяется или нет
для этого нам нужна одна переменная, добавляющая это к службе
let timerFinished=false;
одна функция, чтобы проверить, изменена она или нет
CheckTimers = () => {
setTimeout(() => {
if (timerFinished) {
//empty your modal and clear the values
} else {
this.CheckTimers();
}
}, 200);
}
в добавляемом элементе измените значение этой переменной
export function onAddItem(item) {
axios.post('http://localhost:3001/api/items/', item)
.then(res => {
timerFinished = true;
dispatch({
type: "ADD_ITEM",
item
});
dispatch({
type: "ITEM_LOADED",
status: true
});
})
}
, и вот как мы должны его назвать.
PostData = (items) => {
timerFinished = false;
onAddItem(items);
this.CheckTimers();
}
Если вы проверите это, мы постоянно проверяем изменение переменнойи опустошается только после того, как все сделано.
Одна вещь, которую вам нужно обработать, это то, что когда axios не удалось опубликовать данные, вам нужно изменить значение переменной на что-то и обработать его, вы можете сделать это, используя разные значения 'error','failed','success'
до timerFinished
переменнаяе.