Nous allons explorer comment effectuer des effets secondaires dans la procédure pas à pas avancée. Vous pouvez également activer la proposition d`opérateur d`étalement d`objet pour écrire {. L`état retourné par le réducteur combiné combine l`état initial que j`ai spécifié pour le réducteur avec l`argument par défaut «Wat» spécifié que le réducteur b a choisi lui-même. Tous les réducteurs sont passés undefined sur l`initialisation, donc ils doivent être écrites de telle sorte que lorsqu`il est donné undefined, une certaine valeur doit être retournée. Conservez chaque entité dans un objet stocké avec un ID en tant que clé et utilisez des ID pour le référencer à partir d`autres entités ou listes. En examinant chaque fonction individuellement, le montant de la responsabilité est maintenant plus petit, et l`intention est, espérons-le plus clair. Root est importé une fois dans le module racine, acceptant une fonction de réducteur ou une carte d`objet des fonctions de réducteur. Notez que chacun de ces réducteurs gère sa propre partie de l`état global. Le réducteur est une fonction pure qui prend l`état précédent et une action, et retourne l`état suivant.
Notre réducteur d`application est toujours conscient de tous les différents cas pour notre application. Pas de mutations. Juste un calcul. Filtrer: action. Maintenant que nous avons décidé à quoi ressemble notre objet d`État, nous sommes prêts à écrire un réducteur pour cela. Maintenant, j`ai spécifié le preloadedState comme argument de createStore (). Regardons une démonstration de la façon dont une grande fonction de réducteur unique peut être refactorisée dans une composition de plusieurs fonctions plus petites. On ne mute pas l`État. Étant donné que createStore a été appelé avec 42 comme deuxième argument. Cela permet aux réducteurs de spécifier les données initiales qui sont sensées pour eux comme arguments par défaut, mais permet également de charger des données existantes (entièrement ou partiellement) lorsque vous hydrater le magasin à partir d`un stockage persistant ou le serveur.
Vous pouvez créer un problème pour cela, peut-être qu`ils permettront de transmettre une fonction à l`avenir, ou au moins mettre à jour le commentaire. En tant que dernière étape, nous pouvons maintenant utiliser l`utilitaire combineReducers intégré de Redux pour gérer la logique de «tranche d`État» pour notre réducteur d`application de niveau supérieur. Par conséquent, vous devez vous assurer que vos réducteurs fonctionnent correctement lors de la réception undefined comme État, même si vous n`avez jamais l`intention pour eux de recevoir réellement undefined dans votre propre code. Il ne doit jamais retourner undefined. Supposons que vous n`utilisiez pas de combineReducers (). C`est ainsi que le réducteur combiné renvoie un objet d`État {a: `lol`, b: `Wat`} sur le premier appel. En général, preloadedState gagne sur l`état spécifié par le réducteur. L`autre voie pourrait être la deuxième alternative de ”mettre plus de données dans l`action” (i. Cette fonction vous aide à organiser vos réducteurs pour gérer leurs propres tranches d`État, semblable à la façon dont vous auriez différents flux stores pour gérer l`état différent. Cela a réduit la duplication et a rendu les choses un peu plus faciles à lire. Vous devez fournir un objet vide en tant que premier paramètre. Explorons la composition du réducteur plus.
StoreModule. Bien que le résultat final dans cet exemple soit sensiblement plus long que la version originale, cela est principalement dû à l`extraction des fonctions de l`utilitaire, à l`ajout de commentaires et à une certaine verbosité délibérée pour des raisons de clarté, telles que des retours distincts Déclarations. Cette approche est décrite dans la documentation de normalizr en détail. Nous avons affaire à deux domaines de préoccupation différents (filtrage vs gestion de notre liste de todos), l`imbrication rend la logique de mise à jour plus difficile à lire, et ce n`est pas exactement clair ce qui se passe partout. Cela peut être fait avec une vérification explicite à l`intérieur du réducteur, ou à l`aide de la syntaxe de valeur d`argument par défaut ES6: function Myreducteur (State = someDefaultValue, action).