Autant que je sache et corrige-moi si je me trompe, redux-thunk est un middleware qui nous aide à distribuer la fonction async et à déboguer les valeurs dans l'action elle-même, tandis que lorsque j'ai utilisé redux-promise, je ne pouvais pas créer de fonctions asynchrones sans implémenter les miennes mécanisme comme Action lève une exception de distribution uniquement des objets simples.
Quelles sont les principales différences entre ces deux packages? Y a-t-il des avantages à utiliser les deux packages dans une application de réaction sur une seule page ou à s'en tenir à redux-thunk serait suffisant?
la source
Vous voudrez / aurez probablement besoin des deux dans votre application. Commencez par redux-promise pour les tâches asynchrones de routine générant des promesses, puis augmentez pour ajouter des Thunks (ou Sagas, etc.) à mesure que la complexité augmente :
redux-promise
cela améliorera votre vie et vous simplifiera cela, rapidement et facilement. (En un mot, au lieu que vous ayez à penser à `` déballer '' vos promesses lorsqu'elles se résolvent, puis à écrire / envoyer les résultats, redux-promise (-middleware) s'occupe de tout ce truc ennuyeux pour vous.)Dans ces cas, l'avantage de
redux-thunk
est qu'il vous permet d'encapsuler la complexité à l'intérieur de votre créateur d'action .Mais notez que si votre Thunk produit et envoie des promesses, vous voudrez utiliser les deux bibliothèques ensemble :
redux-promise
se chargerait alors de déballer au (x) réducteur (s) la ou les promesses individuelles générées par votre Thunk, pour éviter le passe-partout que cela implique. (Vous pourriez à la place tout faire à Thunks, avecpromise.then(unwrapAndDispatchResult).catch(unwrapAndDispatchError)
... mais pourquoi le feriez-vous?)Un autre moyen simple de résumer la différence dans les cas d'utilisation: le début vs la fin du cycle d'action Redux :
redux-promise
c'est pour la fin de votre flux, une fois que tout a été réduit à de simples promesses, et que vous voulez simplement les déballer et stocker leur valeur résolue / rejetée dans le magasinREMARQUES / RÉFÉRENCES:
redux-promise-middleware
être une mise en œuvre plus complète et compréhensible de l'idée derrière l'originalredux-promise
. Il est en cours de développement actif et est également bien complété parredux-promise-reducer
.redux-saga
, qui est très similaire àredux-thunk
, mais est basé sur la syntaxe des fonctions génératrices. Encore une fois, vous l'utiliserez probablement en conjonction avecredux-promise
.la source
Divulgation complète: je suis relativement nouveau dans le développement de Redux et j'ai moi-même eu du mal à résoudre cette question. Je vais paraphraser la réponse la plus succincte que j'ai trouvée:
ReduxPromise renvoie une promesse en tant que charge utile lorsqu'une action est distribuée, puis le middleware ReduxPromise travaille pour résoudre cette promesse et transmettre le résultat au réducteur.
ReduxThunk, d'un autre côté, force le créateur d'action à ne pas envoyer réellement l'objet action aux réducteurs jusqu'à ce que la répartition soit appelée.
Voici un lien vers le tutoriel où j'ai trouvé ces informations: https://blog.tighten.co/react-101-part-4-firebase .
la source