Я создал форму в React, которая очищается после каждой отправки. Однако форма также очищается, если отправка не удалась, например, если поле заполнено пользователем неправильно. Это, конечно, довольно раздражает, так как пользователь должен повторить весь процесс ввода данных. Так что я пытаюсь реализовать очистку, которая активируется только после успешной отправки. Если отправка не удалась, данные остаются в форме, чтобы пользователь мог переработать данные.
Для управления состояниями я использую Redux.
Функция отправки
onSubmit = e => {
e.preventDefault();
let { title, content, audio} = this.state;
let formDataStory = new FormData(); // create form formData
formDataStory.append('audio', audio); // add audio to formData
formDataStory.append('title', title); // add title to formData
formDataStory.append('content', content); // add content to formData
this.props.addStory(formDataStory); // call addStory function with formDataStory as Input to create new Story
this.setState({
title: "", // clear title field after submission
content:"", // clear content field after submission
});
this.inputRef.current.value = ''; // clear file field after submission
};
Добавление истории действий
export const addStory = formDataStory => (dispatch, getState) => {
axios.post(apiBase +"/story/", formDataStory, tokenConfig(getState) )
.then(res => {
dispatch(createMessage({ addStory: "Story Added" }));
dispatch({
type: ADD_STORY,
payload: res.data
});
})
.catch(err =>
dispatch(returnErrors(err.response.data, err.response.status))
);
};
В настоящее время я не знаю, как это реализовать, и я не нашел хорошего прочтения о это (мое предположение примерно так: если история успешно добавлена, то -> очистить форму, иначе -> сохранить форму). Я рад любой поддержке в этом.