Soweit ich weiß und mich korrigiere, wenn ich falsch liege , ist Redux-Thunk eine Middleware, die uns hilft, Async-Funktionen und Debug-Werte in der Aktion selbst zu versenden, während ich bei Verwendung von Redux-Versprechen keine Async-Funktionen erstellen konnte, ohne meine eigenen zu implementieren Mechanismus als Aktion löst eine Ausnahme aus, bei der nur einfache Objekte versendet werden.
Was sind die Hauptunterschiede zwischen diesen beiden Paketen? Gibt es irgendwelche Vorteile, wenn Sie beide Pakete in einer App für die Reaktion auf eine einzelne Seite verwenden oder wenn Sie sich an Redux-Thunk halten?
quelle
Sie werden wahrscheinlich beide zusammen in Ihrer App wollen / brauchen. Beginnen Sie mit Redux-Versprechen für routinemäßige asynchrone Aufgaben, die Versprechen versprechen, und skalieren Sie dann, um Thunks (oder Sagas usw.) hinzuzufügen, wenn die Komplexität zunimmt :
redux-promise
verbessern Sie Ihr Leben und vereinfachen dies schnell und einfach. (Kurz gesagt, anstatt dass Sie darüber nachdenken müssen, Ihre Versprechen auszupacken, wenn sie gelöst werden, und dann die Ergebnisse zu schreiben / zu versenden, kümmert sich redux-versprechen (-middleware) um all das langweilige Zeug für Sie.)In diesen Fällen besteht der Vorteil
redux-thunk
darin, dass Sie die Komplexität in Ihrem Aktionsersteller zusammenfassen können .Beachten Sie jedoch, dass Sie beide Bibliotheken zusammen verwenden möchten , wenn Ihr Thunk Versprechen erstellt und versendet :
redux-promise
würde dann das Auspacken der von Ihrem Thunk generierten individuellen Versprechen an den Reduzierern handhaben, um die damit verbundene Kesselplatte zu vermeiden. (Sie könnten stattdessen alles in Thunks machen, mitpromise.then(unwrapAndDispatchResult).catch(unwrapAndDispatchError)
... aber warum sollten Sie?)Eine weitere einfache Möglichkeit, den Unterschied in den Anwendungsfällen zusammenzufassen: Beginn und Ende des Redux-Aktionszyklus :
redux-promise
ist für das Ende Ihres Flusses, wenn alles auf einfache Versprechen reduziert wurde und Sie sie nur auspacken und ihren aufgelösten / abgelehnten Wert im Geschäft speichern möchtenANMERKUNGEN / REFS:
redux-promise-middleware
, dass die Idee hinter dem Original vollständiger und verständlicher umgesetzt wirdredux-promise
. Es befindet sich in der aktiven Entwicklung und wird auch gut ergänzt durchredux-promise-reducer
.redux-saga
, die sehr ähnlich istredux-thunk
, aber auf der Syntax der Generatorfunktionen basiert. Auch hier würden Sie es wahrscheinlich in Verbindung mit verwendenredux-promise
.quelle
Vollständige Offenlegung: Ich bin relativ neu in der Redux-Entwicklung und habe selbst mit dieser Frage zu kämpfen. Ich werde die prägnanteste Antwort umschreiben, die ich gefunden habe:
ReduxPromise gibt ein Versprechen als Nutzlast zurück, wenn eine Aktion ausgelöst wird. Anschließend löst die ReduxPromise-Middleware dieses Versprechen und leitet das Ergebnis an den Reduzierer weiter.
ReduxThunk hingegen zwingt den Aktionsersteller, das tatsächliche Versenden des Aktionsobjekts an die Reduzierer zu unterbrechen, bis der Versand aufgerufen wird.
Hier ist ein Link zu dem Tutorial, in dem ich diese Informationen gefunden habe: https://blog.tighten.co/react-101-part-4-firebase .
quelle