61 votes

Angular 6 - Pourquoi utiliser @ ngrx / store plutôt que l'injection de service

Je suis récemment apprentissage Angulaire 6 avec @ngrx/boutique tout en un de ce tutoriel est d'utiliser @ngrx/store pour la gestion de l'état, cependant je ne comprends pas l'avantage de l'utilisation de @ngrx/magasin derrière la scène.

Par exemple, pour une connexion simple et de l'inscription de l'action, précédemment en utilisant le service(nous allons l'appeler AuthService) on peut l'utiliser pour appeler l'api principale, magasin "userInfo" ou "token" dans le AuthService, de rediriger l'utilisateur vers la page d'ACCUEIL et nous pouvons injecter AuthService dans un composant où nous en avons besoin pour obtenir le userInfo en utilisant DI, qui, tout simplement, que l'un fichier AuthService s'occupe de tout.

Maintenant, si nous sommes à l'aide de @ngrx/magasin, nous avons besoin de définir l' Action/État/Réducteur/Effets/Sélecteur de ce qui a probablement besoin d'écrire dans 4 ou 5 fichiers à la poignée au-dessus de l'action ou de l'événement, alors parfois encore, nous devons appeler les api principale à l'aide de service, qui semble beaucoup plus complexe et redondant...

Dans certains autres scénario, je vois même une certaine page utilise @ngrx/magasin de stockage de l'objet ou de la liste de l'objet grille de données., c'est que pour certains type de mémoire de l'usage?

Donc, pour revenir à la question, pourquoi sommes-nous à l'aide de @ngrx/store sur inscription au service de magasin ici Angulaire du projet? Je sais que c'est pour "la GESTION de l'ÉTATd'utilisation", mais quelle est exactement la "GESTION de l'ÉTAT"? Est-ce quelque chose comme le journal des transactions et Quand avons-nous besoin? Pourquoi devrions-nous gérer le devant à la fin? N'hésitez pas à partager votre avis ou expérience dans le @ngrx/magasin de la zone de!

28voto

Je pense que vous devriez lire ces deux articles sur les Ngrx magasin:

Si la première explique les principaux problèmes résolus par Ngrx Magasin, il a également citer cette déclaration de l'Réagissent Comment faire "qui semble s'appliquer également à des Flux d'origine, Redux, Ngrx Magasin ou n'importe quel magasin de solution en général":

Vous saurez quand vous avez besoin de Flux. Si vous n'êtes pas sûr si vous en avez besoin, vous n'en avez pas besoin.

Pour moi Ngrx magasin résout plusieurs problèmes. Par exemple, lorsque vous avez à traiter avec des observables et quand la responsabilité de certaines données observables est partagée entre les différents composants. Dans ce magasin d'actions et réducteur de s'assurer que les modifications de données sera toujours effectuée "le droit chemin".

Il fournit également une solution fiable pour les requêtes http de mise en cache. Vous serez en mesure de stocker les demandes et leurs réponses, de sorte que vous pouvez vérifier que la demande que vous faites n'a pas stockée de réponse encore.

Le deuxième poste est à propos de ce qui fait de ces solutions ne semble Réagir dans le monde avec Facebook du compteur de messages non lus problème.

Concernant votre solution de stockage non-obvervable de données dans les services. Cela fonctionne bien lorsque vous êtes en relation constante avec les données. Mais lorsque plusieurs composants devront mettre à jour ces données, vous rencontrez probablement changer les problèmes de détection et de mauvaise problèmes de mise à jour, que vous pourriez résoudre avec:

  • modèle observateur avec Sujet privé public Observables et de la fonction suivante
  • Ngrx Magasin

6voto

Aleksa Points 1272

Il existe également une troisième option, avoir des données en service et utiliser le service directement en html, par exemple *ngFor="let item of userService.users" . Ainsi, lorsque vous mettez à jour userService.users en service après qu'une action d'ajout ou de mise à jour soit automatiquement rendue en html, pas besoin d'observables ou d'événements ou de stockage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X