2016-08-04 24 views
3

Ich habe eine React + Redux-Anwendung (gebaut und verteilt mit Elektron), die einmal am Tag, zu einer bestimmten Stunde in der Nacht, herunterladen und in das Dateisystem des Benutzers mehrere Dateien speichern soll.Redux Heavy Lifting: Wo soll ich mehrere Dateien herunterladen und speichern?

Die API-Aufrufe und die Gesamtanzahl der Operationen scheinen mir ein bisschen zu viel in den Reduzierern zu sein, also bin ich hier um zu fragen, ob es ein besseres Designmuster dafür gibt.

Nur um Ihnen eine Vorstellung zu geben, ist hier die Operationen führe ich sollte diese Aufgabe abzuschließen:

  1. [API-Aufruf] eine Liste von Ordnern aus dem Remote-Service erhalten
  2. [API-Aufruf] für jede Ordner, erhalten eine Liste der Inhalte
  3. [FS]: überprüfen, ob der lokale Inhalt vorhanden ist und die gleiche Version wie die Fern eines
    • [API-Aufruf] ist, wenn nicht, download Inhalt
    • [FS] speichern Inhalt

Die Anzahl der beteiligten Ordner im Bereich von 10 bis 30 und der Inhalt leicht auf 100 oder mehr gehen könnte, um Dateisystem auf.

Kernpunkte:

  • Der Benutzer nicht mit der App während dieser Operation, so dass keine Notwendigkeit für Webworker oder andere Asynchron-schwarze Magie
  • Der Sync durch ein externes Skript in ein anderes getan werden könnte, Sprache, aber ich würde lieber alle Logik in einer einzigen App für die einfache Verteilung und Einrichtung
  • Alle oben genannten Punkte als [API-Aufruf] sind in meinem aktuellen Setup asynchron, so dass es ein bisschen nicht trivial Rückruf ist Management beteiligt

Irgendeine Idee auf, wo ich diesen ganzen Bündel Code setzen könnte, während ich meinen Code immer noch lesbar und wartbar halte? Sollte es der Reducer, Action Creator, Container-Komponente, Präsentations-Komponente oder etwas anderes sein?

Danke!

Antwort

0

Ich würde eine redux-saga für diese Aufgabe erstellen. Schauen Sie sich die Readme an, es gibt ziemlich gute Idee, was es ist. Es kann zunächst ziemlich schwierig sein zu verstehen, aber am Ende erhalten Sie einen Code, der leicht zu lesen und zu testen ist.

+0

Definitiv nicht leicht zu verstehen, aber wirklich hilfreich in diesem Anwendungsfall! Danke für den Hinweis, ich endete mit einem ziemlich sauberen und ordentlichen Code! – GavinoGrifoni