Я отправляю действие, которое выполняет вызов API в методе asyncValidate в виде редукса.Вызов API не удается.Я пытаюсь показать сообщения об успешной и неудачной отправке в форме, но submitSucceeded всегда получает значение true, прежде чем вызов API завершится неудачно.Поэтому я всегда получаю сообщение об успешной отправке, прежде чем вижу сообщение об ошибке.
Перед использованием asyncValidate я попробовал то же самое в методе onSubmit.Я выкидываю ошибку внутри действия, но это не помогает.
Вот код для компонента:
const SubmissionForm = ({handleSubmit, submitFailed, submitSucceeded, asyncValidating}) =>
<Form onSubmit={handleSubmit}>
{submitFailed && <div>Failed</div>}
{submitSucceeded && <div>Succeeded</div>}
{asyncValidating && <div>Validating...</div>}
<Field name={`name`} type="text" component={"input"} />
</Form>
const enhancer = {
connect(null,{ editUser }),
reduxForm({
form: "editUser",
asyncBlurFields: [],
onSubmit: () => {},
asyncValidate: async (data, _, {editUser}) => {
return await editUser(data)
}
})
}
И код для действия:
const editUserStart = (user) => ({ type: EDIT_USER_START, user })
const editUserSuccess = (user) => ({ type: EDIT_USER_SUCCESS, user })
const editUserError = (error) => ({ type: EDIT_USER_ERROR, error })
const editUser = (data) => async dispatch => {
dispatch(editUserStart(data))
try {
const response = await api.postUserInfo(data)
if (response.error) {
throw new Error(response.error)
}else{
return dispatch(editUserSuccess(data))
}
} catch (e) {
dispatch(setSubmitFailed("editUser", e))
dispatch(editUserError(e))
}
}
Как я могу запретить форме устанавливать submitSucceeded до сбоя?