2017-07-18 6 views
1

J'ai commencé à travailler sur le projet reactnative - redux. Je suis totalement nouveau sur ce paradigme fonctionnel. Ma question est simple: j'ai différentes options de connexion/inscription et l'un d'entre eux est facebook. À l'intérieur de mon dossier d'action, je reçois un jeton de Facebook. Je devrais l'envoyer au serveur pour vérifier. Cette demande peut renvoyer plusieurs résultatsReact-native Redux La logique métier doit-elle être dans les actions ou les réducteurs?

  • Cet utilisateur est nouvelle page nouvel utilisateur open
  • Cet utilisateur existe déjà et approuvé, la page d'application ouverte
  • Cet utilisateur existe déjà, mais la vérification des sms approuvé hasnt encore, sms ouvert écran de vérification.

et la question est; Où devrais-je mettre ces logiques? Devrais-je tout faire sur les actions ou simplement envoyer des événements au réducteur et le laisser décider. Je suis confus à ce sujet.

Merci

Répondre

0

par le Redux FAQ entry on "where should my business logic live?":

Il n'y a pas seule réponse claire à exactement ce que les pièces de la logique devrait aller dans un réducteur ou un créateur d'action. Certains développeurs préfèrent avoir des créateurs d'actions "gros", avec des réducteurs "minces" qui prennent simplement les données dans une action et les fusionnent aveuglément dans l'état correspondant. D'autres essaient de mettre l'accent sur des actions aussi réduites que possible et réduisent au minimum l'utilisation de getState() dans un créateur d'actions. (Aux fins de cette question, d'autres approches async telles que sagas et observables tombent dans la catégorie « créateur d'action ».)

Ce commentaire résume la dichotomie bien:

Maintenant, le problème est de savoir quoi mettre dans le créateur de l'action et ce qui dans le réducteur, le choix entre les objets d'action gras et minces. Si vous mettez toute la logique dans le créateur de l'action, vous vous retrouvez avec des objets d'action gros qui déclarent fondamentalement les mises à jour de l'état. Les réducteurs deviennent purs, stupides, ajoutent ceci, suppriment cela, mettent à jour ces fonctions. Ils seront faciles à composer. Mais peu de votre logique métier sera là. Si vous mettez plus de logique dans le réducteur, vous finissez avec des objets d'action sympas et fins, la plupart de votre logique de données à un endroit, mais vos réducteurs sont plus difficiles à composer car vous pourriez avoir besoin d'informations provenant d'autres branches. Vous vous retrouvez avec de grands réducteurs ou réducteurs qui prennent des arguments supplémentaires de plus haut dans l'état.

J'ai aussi discuté de l'idée des réducteurs « épais » et « minces » dans mon blog The Tao of Redux, Part 2 - Practice and Philosophy.

+0

Bien sûr, il n'y a pas de réponse claire comme toujours, mais devrais-je choisir des actions de graisse ou des réducteurs de graisse? Cependant, votre blog m'a beaucoup aidé surtout sur redux-logic qui m'aidera à réduire la taille des actions et aussi les fonctions de sélecteur avec les réducteurs de tranches. Je vous remercie – kekkeme