Sejauh yang saya tahu dan mengoreksi saya jika saya salah, redux-thunk adalah middleware yang membantu kami mengirimkan fungsi async dan nilai debug dalam tindakan itu sendiri sementara ketika saya menggunakan redux-promise saya tidak dapat membuat fungsi async tanpa menerapkannya sendiri mekanisme saat Action melontarkan pengecualian untuk hanya mengirimkan objek biasa.
Apa perbedaan utama antara kedua paket ini? Apakah ada manfaat menggunakan kedua paket dalam satu aplikasi reaksi halaman atau tetap menggunakan redux-thunk sudah cukup?
sumber
Anda mungkin ingin / membutuhkan keduanya bersama-sama di aplikasi Anda. Mulailah dengan redux-promise untuk tugas asinkron rutin yang menghasilkan promise, lalu tingkatkan untuk menambahkan Thunks (atau Sagas, dll.) Saat kompleksitas meningkat :
redux-promise
akan meningkatkan hidup Anda dan menyederhanakannya, cepat dan mudah. (Singkatnya, alih-alih Anda perlu berpikir tentang 'membuka bungkusan' janji Anda ketika mereka menyelesaikannya, lalu menulis / mengirimkan hasilnya, redux-promise (-middleware) menangani semua hal yang membosankan itu untuk Anda.)Dalam kasus tersebut, keuntungan dari
redux-thunk
adalah memungkinkan Anda untuk merangkum kompleksitas di dalam pembuat tindakan Anda .Tetapi perhatikan bahwa jika Thunk Anda menghasilkan dan mengirimkan promise, Anda akan ingin menggunakan kedua library tersebut secara bersamaan :
redux-promise
kemudian akan menangani pembukaan bungkusan di peredam janji individu yang dihasilkan oleh Thunk Anda, untuk menghindari boilerplate yang diperlukan. (Anda malah bisa melakukan semuanya di Thunks, denganpromise.then(unwrapAndDispatchResult).catch(unwrapAndDispatchError)
... tapi mengapa Anda melakukannya?)Cara sederhana lain untuk meringkas perbedaan dalam kasus penggunaan: awal vs. akhir siklus tindakan Redux :
redux-promise
adalah untuk akhir aliran Anda, setelah semuanya telah diringkas menjadi janji sederhana, dan Anda hanya ingin membukanya dan menyimpan nilai terselesaikan / ditolak mereka di tokoCATATAN / REFS:
redux-promise-middleware
implementasi yang lebih lengkap dan dapat dimengerti dari ide di balik aslinyaredux-promise
. Ini sedang dalam pengembangan aktif, dan juga dilengkapi dengan baik olehredux-promise-reducer
.redux-saga
, yang sangat mirip denganredux-thunk
, tetapi didasarkan pada sintaks fungsi generator. Sekali lagi, Anda mungkin akan menggunakannya bersamaan denganredux-promise
.sumber
Pengungkapan penuh: Saya relatif baru dalam pengembangan Redux dan berjuang dengan pertanyaan ini sendiri. Saya akan memparafrasekan jawaban paling ringkas yang saya temukan:
ReduxPromise mengembalikan sebuah janji sebagai payload ketika suatu tindakan dikirim, dan kemudian middleware ReduxPromise bekerja untuk menyelesaikan janji itu dan meneruskan hasilnya ke peredam.
ReduxThunk, di sisi lain, memaksa pembuat tindakan untuk menunda pengiriman objek tindakan ke reduksi sampai pengiriman dipanggil.
Berikut tautan ke tutorial tempat saya menemukan info ini: https://blog.tighten.co/react-101-part-4-firebase .
sumber