Ich benutze @ ngrx/effects in einer angular2-Anwendung und kämpfe mit der Organisation der verschiedenen Effektdefinitionen.NGRX Effekte - Wo/Wie man Effektdefinitionen organisiert.
ich Entitäten, Identity
und Subscription
, die jeweils mit ihren eigenen Aktionen Dienstleistungen IdentityActions
, SubscriptionActions
, sowie die Auswirkungen Dienste IdentityEffects
, SubscriptionEffects
.
Die folgenden Aktionen sind definiert.
IdentityActions.AuthorizeIdentity()
IdentityActions.OnIdentityAuthorized(identity)
SubscriptionActions.GetSubscriptionList(identity)
SubscriptionACtions.OnSubscriptionsListed(subscriptions)
Nachdem eine Identität autorisiert wurde, möchte ich sofort eine Liste ihrer Abonnements erhalten. Wie befürwortet @ngrx/effects
die Organisation dieser Effekte, so dass es später nachvollziehbar/einfach zu finden ist (z.B. in einem Jahr)?
In IdentityEffects:
@Effect()
this._actions.ofType(authActions.AUTHORIZE_IDENTITY))
.switchMap(() => this.svc.AsyncAuth())
.switchMap((identity) => authActions.OnIdentityAuthorized(identity))
@Effect()
this._actions.ofType(authActions.ON_IDENTITY_AUTHORIZED)
.switchMap((identity) => Observable.of(action, subActions.GetSubscriptionList(identty))
Dies scheint natürlich, wenn es zu schreiben, weil die Liste Abonnement immer eine Wirkung einer Identität ist immer berechtigt, ... aber ich bin besorgt, weil wenn ein Entwickler jemals versucht, Wenn Sie herausfinden, von wo die Subskriptionsliste abgerufen wird, ist es nicht intuitiv, im IdentityService herumzugrasen.
Die Alternative ist ein zweiter Effekt in CustomerEffects zu registrieren, die nicht emittieren nicht ..
@Effect({emit: false})
this._actoions.ofType(authActions.ON_IDENTITY_AUTHORIZED)
.switchMap((identity) => Observable.of(action, subActions.GetSubscriptionList(identity))
Dies scheint, wie es einfacher wäre, auf lange Sicht zu finden ... Aber fühlt sich weniger natürlich beim Schreiben es (Ich schreibe einen Identitätsnebeneffekt im Abonnement-Service ...)
Was ist der bewährte Ansatz (wenn es überhaupt genug Zeit gibt)?
Haben Sie sich ihre [Beispiel-App] angesehen (https://github.co m/ngrx/Beispiel-App)? – cgatian
Es ist nicht klar, was einige dieser Schnipsel tun. Zum Beispiel, was ist "Aktion" im letzten Ausschnitt? Die Aktion, die den Effekt ausgelöst hat? Wenn ja, warum es wieder emittieren? Es wäre bereits an die Reduzierungen weitergegeben worden.Und wenn 'GetSubscriptionList' einen Zustand aktualisiert, der einen anderen Mechanismus als eine ausgeführte Aktion verwendet, ist das, was Sie tun, nicht länger Redux. – cartant
Ich hatte den Eindruck, dass meine Servicenamen ziemlich Standard waren. UnterAktionen ist eine Klasse, die Methoden verfügbar macht, die Aktionen im Zusammenhang mit Abonnements für den Informationsspeicher ausgeben. Es enthält auch Konstanten für die Auflösung des Aktionstyps. Der letzte Effekt löst zwei Aktionen aus, die eine, die abgefangen wurde (so dass die Identität auf den Status angewendet wird) und eine zweite, die eine "GetSubscriptionList" -Aktion ausgibt. Die Frage, denke ich jedenfalls, ist ziemlich klar. Was ist die beste Vorgehensweise zum Registrieren eines Effekts außerhalb des primären Ressourcenbereichs einer Datei? –