Я новичок в React/Redux, поэтому я создаю простое приложение для блога с Redux Form, чтобы помочь мне учиться. Прямо сейчас я не понимаю, как я буду обрабатывать ошибки ajax при отправке данных из формы в API в моем действии. Основная проблема заключается в том, что я использую свойство конфигурации onSubmitSuccess формы Redux, и оно, кажется, всегда вызывается, даже когда возникает ошибка. Я действительно не понимаю, что вызывает onSubmitSuccess или onSubmitFail. Моя функция onSubmitFail никогда не выполняется, но моя функция onSubmitSuccess выполняется всегда, независимо от того, произошла ошибка или нет.
Я читал об SubmissionError в документации по redux-form, но в нем говорится, что цель этого - "отличить отклонение обещания из-за ошибок проверки от отклонения обещания из-за ввода-вывода AJAX". Итак, похоже, это противоположно тому, что мне нужно.
Я использую redux-promise в качестве промежуточного программного обеспечения с Redux, если это имеет значение.
Вот мой код. Я намеренно выбрасываю ошибку в API моего сервера, чтобы сгенерировать ошибку в моем действии createPost:
Контейнер с моей редукционной формой
PostsNew = reduxForm({
validate,
form: 'PostsNewForm',
onSubmit(values, dispatch, props) {
// calling my createPost action when the form is submitted.
// should I catch the error here?
// if so, what would I do to stop onSubmitSuccess from executing?
props.createPost(values)
}
onSubmitSuccess(result, dispatch, props) {
// this is always called, even when an exeption occurs in createPost()
},
onSubmitFail(errors, dispatch) {
// this function is never called
}
})(PostsNew)
Действие, вызванное onSubmit
export async function createPost(values) {
try {
const response = await axios.post('/api/posts', values)
return {
type: CREATE_POST,
payload: response
}
} catch (err) {
// what would I do here that would trigger onSubmitFail(),
// or stop onSubmitSuccess() from executing?
}
}