Wie wählen Sie die Redux Zustand-shape für eine app mit Listen - /detail-Ansichten und die Paginierung?

Vorstellen, ich habe eine Anzahl der Einträge(z.B. Benutzer) in meiner Datenbank. Ich habe auch zwei Routen, eine für die Liste, andere für detail(wo man den Beitrag Bearbeiten). Jetzt bin ich mit zu kämpfen, wie der Ansatz der Daten-Struktur.

Ich bin denken der beiden Ansätze, und ein bisschen Kombination von beiden.

Freigegebenen Datensatz

  • Ich navigieren Sie zu /list alle meine Benutzer heruntergeladen werden, der von der api gespeichert, die in der redux-store unter dem Schlüssel users ich auch hinzufügen, eine Art von users_offset und users_limit Rendern nur ein Teil der von der Liste
  • Ich dann navigieren Sie zu /detail/<id>, und speichern currently_selected_user mit <id> als val... was bedeutet, ich werde in der Lage sein, um meine Benutzerdaten mit sowas users.find(res => res.id === currently_selected_user)
  • Aktualisierung ist einfach und schön, als gut, denn ich arbeite mit nur einem Datensatz und Details verweisen
  • hinzufügen eines neuen Benutzers auch einfach wieder nur mit der gleichen Liste von Benutzern

Nun habe ich das problem mit diesem Ansatz ist, dass, wenn die Liste der Benutzer bekommt riesige(sprich Millionen), es kann eine Weile dauern zu laden. Und auch, wenn ich Sie direkt /detail/<id> ich noch nicht, habe alle meine Benutzer heruntergeladen, so dass die Daten nur für das, was ich brauche, ich bin gonna haben, um den ersten download der ganzen Sache. Millionen von Nutzern einfach zu Bearbeiten.

Getrennt Datensatz

  • Ich navigieren Sie zu /list, und statt dem herunterladen alle meine Benutzer-api, ich lade nur ein paar von Ihnen, je nachdem, was meine users_per_page und users_current_page eingestellt werden würde, und ich würde wahrscheinlich speichern Sie die Daten als users_currently_visible
  • Ich dann navigieren Sie zu /detail/<id> speichern currently_selected_user mit <id> als val...und anstelle der Suche durch users_currently_visible ich einfach die download-Daten aus der api..
  • auf update, ich bin nicht gonna update users_currently_visible in irgendeiner Weise
  • noch werde ich auf hinzufügen

Was sehe ich als mögliches problem hier ist, dass ich bin gonna haben, um auf den Besuch /list -, download-Daten aus der api immer wieder, weil es vielleicht nicht in sync mit dem, was in der Datenbank, ich könnte auch unnötig herunterladen von Nutzer-Daten im detail an, denn Sie könnten übrigens schon in meinem users_currently_visible

eine Art frankenstein-y-Spielereien

  • Ich ausführlich, ich das gleiche tun wie in Getrennt Datensatz aber anstatt direkt herunterladen von user-Daten aus der api, die ich zunächst prüfen:
    • habe ich users_currently_visible
    • wenn dem so ist, gibt es einen user mit meiner id zwischen Ihnen?
      wenn beide Bedingungen erfüllt sind, dann verwende ich es als meine user-Daten, sonst mache ich die api-Aufruf
  • gleiche passiert auf update, überprüfe ich, ob mein user existiert zwischen users_currently_visible wenn ja, ich habe auch update-Liste, wenn ich nicht nichts tun

Diese würde wahrscheinlich funktionieren, aber nicht wirklich das Gefühl, es ist der richtige Weg. Ich würde wohl auch noch herunterladen müssen frische Liste der users_currently_visible beim Besuch /list, denn ich könnte Hinzugefügt haben, ein neues..

Gibt es eine fan-Lieblings-Weg, dies zu tun?... Ich bin mir sicher, dass jeder einzelne redux muss der Benutzer hat die gleichen Dinge.

Dank!

  • In unserer app sind wir derzeit mit der "getrennt-Daten-set" - Ansatz. Es macht mehr Aufrufe der API, aber es funktioniert. Aber trotzdem, es fühlt sich an wie der richtige Ansatz wäre, mit einem einzigen Daten-set. Ich bin mir nicht sicher, auf dieser auch.
  • Ich denke, es kommt darauf an, wie viele Einträge in der Datenbank, diese jsonplaceholder.typicode.com/photos 5000 Elemente und es ist schon 900 Kb..
  • Ja, du hast Recht. Aber konzeptionell, es fühlt sich an, dass der richtige Ansatz ist die Verwendung der gleichen Daten einstellen. Trotzdem, betrachten wir diese zwei Einträge im app-Zustand, wie die folgenden: eine kurze Liste enthält nur die Daten, die benötigt werden, um die Liste und ein detailliertes Objekt mit allen Requisiten, wenn Sie hinzufügen, Bearbeiten, etc. Es ist technisch besser, aber ich hätte gerne alle in nur einem Datensatz ohne performance Probleme 🙂
InformationsquelleAutor fxck | 2015-11-26
Schreibe einen Kommentar