2017-02-28 3 views
0

Ich habe meine Minderer mit einem Ausgangszustand eines leeren Array:ngrx, Wie man einen Ausgangszustand von einer API hat?

folderReducer(state:Array<Folder> = [], action: Action) 

Ich mag würde den Ausgangszustand zu füllen, so dass, wenn ich

store.subscribe(s => ..) 

Der erste Punkt I kommt erhalten aus die Datenbank. Ich gehe davon aus, dass dies mit ngrx/effects geschieht, aber ich bin mir nicht sicher, wie.

+0

Ja, es ist mit Ngrx/Effekte. Ich habe einen Tuto auf [stackoverflow Dokumentation] (http://stackoverflow.com/documentation/angular2/8086/ngrx) und Sie können eine Menge toller Tutorial da draußen finden;) – Maxime

+0

Sie könnten einen Filter 'speichern. Wählen Sie (x => x.user) .filter (user => !! user) ' – cgatian

Antwort

5

Ihr Geschäft hat immer den Anfangszustand, den Sie in der Reducer-Funktion definieren. Die Initial States Hauptzweck ist es, sicherzustellen, dass die Anwendung gestartet werden kann und keine Nullzeiger-Ausnahmen auftreten. Und es richtet auch Ihre Anwendung ein, um anzufangen, die ersten api-Anrufe ect zu machen. - so können Sie es als technischen Anfangszustand denken.

Wenn Sie Ihren Speicher mit api-Daten auf dem Start füllen wollen, würden Sie das auf die gleiche Weise tun, dass Sie Daten, die während jeder anderen Aktion hinzufügen/ändern - nur, dass die Wirkung von „zunächst Daten geladen werden“ wird nicht von einer Benutzer-Interaktion ausgelöst, sondern durch:

  • entweder, wenn die Wurzelkomponente Lasten
  • oder als Teil eines Dienstes im Konstruktor

Falls Sie spezifische compon verhindern Wenn Sie nichts anzeigen möchten, bis Ihr API-Aufruf abgeschlossen ist, müssten Sie die Anzeigekomponenten anpassen, um Daten basierend auf Ihrem Status anzuzeigen oder auszublenden (z. durch die Implementierung einer Flagge in Ihrem satet initialDataLoaded).

Verwandte Themen