Saya baru mengenal React/Redux jadi saya membuat aplikasi blog sederhana dengan Redux Form untuk membantu saya belajar. Saat ini saya tidak yakin bagaimana cara menangani kesalahan ajax saat mengirimkan data dari formulir ke api dalam tindakan saya. Masalah utamanya adalah saya menggunakan properti konfigurasi onSubmitSuccess dari Redux Form dan sepertinya selalu dipanggil, bahkan ketika terjadi kesalahan. Saya benar-benar tidak mengerti apa yang memicu onSubmitSuccess atau onSubmitFail. Fungsi onSubmitFail saya tidak pernah dijalankan, tetapi fungsi onSubmitSuccess saya selalu dijalankan, terlepas dari apakah terjadi kesalahan atau tidak.
Saya membaca tentang SubmissionError di dokumen redux-form, tetapi dikatakan bahwa tujuannya adalah "untuk membedakan penolakan janji karena kesalahan validasi dari penolakan janji karena AJAX I/O". Jadi, sepertinya itu kebalikan dari apa yang saya butuhkan.
Saya menggunakan redux-promise sebagai middleware dengan Redux jika itu ada bedanya.
Ini kode saya. Saya sengaja membuat kesalahan pada api server saya untuk menghasilkan kesalahan dalam tindakan createPost saya:
Penampung dengan formulir redux saya
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)
Tindakan yang diminta oleh 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?
}
}