O ile wiem i poprawiam mnie, jeśli się mylę, redux-thunk to oprogramowanie pośredniczące, które pomaga nam wywoływać funkcję asynchroniczną i debugować wartości w samej akcji, podczas gdy gdy użyłem redux-obietnica, nie mogłem tworzyć funkcji asynchronicznych bez implementacji własnej mechanizm, ponieważ Action rzuca wyjątek wysyłania tylko zwykłych obiektów.
Jakie są główne różnice między tymi dwoma pakietami? Czy są jakieś korzyści z używania obu pakietów w jednej aplikacji reagującej na jedną stronę lub wystarczy trzymać się redux-thunk?
źródło
Prawdopodobnie będziesz potrzebować obu razem w swojej aplikacji. Zacznij od redux-promise dla rutynowych zadań asynchronicznych tworzących obietnice, a następnie skaluj w górę, aby dodać Thunks (lub Sagas itp.) W miarę wzrostu złożoności :
redux-promise
poprawi to Twoje życie i uprości je, szybko i łatwo. (Krótko mówiąc, zamiast myśleć o `` rozpakowaniu '' swoich obietnic, gdy zostaną rozwiązane, a następnie napisaniu / wysłaniu wyników, redux-promise (-middleware) zajmie się wszystkimi nudnymi rzeczami.)W takich przypadkach zaletą
redux-thunk
jest to, że pozwala na zawarcie złożoności w kreatorze akcji .Pamiętaj jednak, że jeśli Twój Thunk tworzy i wysyła obietnice, będziesz chciał używać obu bibliotek razem :
redux-promise
będzie wtedy obsługiwał rozpakowywanie w reduktorze (-ach) indywidualnych obietnic wygenerowanych przez Thunk, aby uniknąć schematu, który za tym idzie. (Ty mógł zamiast robić wszystko, co w łącznikami, zpromise.then(unwrapAndDispatchResult).catch(unwrapAndDispatchError)
... ale dlaczego prawda?)Kolejny prosty sposób na podsumowanie różnicy w przypadkach użycia: początek kontra koniec cyklu akcji Redux :
redux-promise
jest na koniec twojego przepływu, gdy wszystko zostanie sprowadzone do prostych obietnic, a ty po prostu chcesz je rozpakować i przechowywać ich rozstrzygniętą / odrzuconą wartość w sklepieUWAGI / REFS:
redux-promise-middleware
jest to pełniejsza i bardziej zrozumiała realizacja idei oryginałuredux-promise
. Jest w trakcie aktywnego rozwoju, a także jest ładnie uzupełnionyredux-promise-reducer
.redux-saga
, które jest bardzo podobne doredux-thunk
składni funkcji generatora, ale jest oparte na składni. Ponownie, prawdopodobnie użyjesz go w połączeniu zredux-promise
.źródło
Pełne ujawnienie: Jestem stosunkowo nowy w rozwoju Redux i sam zmagałem się z tym pytaniem. Parafrazuję najbardziej zwięzłą odpowiedź, jaką znalazłem:
ReduxPromise zwraca obietnicę jako ładunek po wysłaniu akcji, a następnie oprogramowanie pośredniczące ReduxPromise działa, aby rozwiązać tę obietnicę i przekazać wynik do reduktora.
Z drugiej strony, ReduxThunk zmusza twórcę akcji do wstrzymania się z faktycznym wysyłaniem obiektu akcji do reduktorów, dopóki nie zostanie wywołana wysyłka.
Oto link do samouczka, w którym znalazłem te informacje: https://blog.tighten.co/react-101-part-4-firebase .
źródło