Wir verwenden ngrx/store in unserer Angular 2 App. Unser Geschäft besteht aus Reduzierern "cameraReducer", "subjectReducer"
... und wir wollen ein paar globale und auch gemeinsame (über Diff-Funktionalitäten) Elemente wie "Loading Data" -Eigenschaften in "appReducer"
pflegen.Angular2 - Teilen der Aktion zwischen Reduzierern eine schlechte Idee?
In einem Szenario wie diesem macht es Sinn, eine Aktion wie {type:LOADING_*, payload}
zwischen individualReducers
und appReducer
zu teilen? Dies sollte eingeschaltet sein, während eine Funktionalität (die wie ein einzelner Teil der Datenoperation [mit einem einzelnen Reducer und einer einzigen Aktion] oder mehrere zugehörige Datenoperationen [mit mehreren Reduzierern und mehreren Aktionen]) gestartet und deaktiviert werden kann einmal vervollständigt. Der AppReducer kann wie folgt aussehen:
Adv - Nein Boilerplate. Nachteile - Die Bestellung von Reduzierstücken spielt eine Rolle, wenn der Indikator ein-/ausgeht.
Oder
case LOADING:
return state.setIn('loading') = true;
können wir Code haben wie am Anfang/Ende jeder Funktionalität Aufruf
this.store.dispatch({action:'LOADING', payload: true});
//functionality
this.store.dispatch({action:'LOADING', payload: false});
Adv - Kontrollierte Reihenfolge der Anzeige Pop-on/off. Nachteile - Boilerplate-Code zum Ein-/Ausschalten des Ladens.
Oder
Wir können versuchen, den „Laden“ als kombiniertes Observablen zu berechnen (mit jeweils Minderer ihre eigene lokale „Laden“ Eigenschaft und ein beobachtbares dieser Eigenschaft).
Adv - Nein Boilerplate und Controlled Ordering-Anzeige an/aus. Nachteile - Erhöhte Komplexität und mehr Code möglicherweise.