Wie die Struktur der Paginierung Staat in Redux

TL;DR: Wie Sie speichern Paginierung Staat in einer Redux-store ein großes, normalisierten Zustand Baum mit vielen Ressourcen, und mehrere Ansichten anzeigen verschiedener paginiert Ergebnisse?

Frage ich mich, was ist der beste Weg, um Paginierung von Daten in einer Redux-Shop. Dieser Artikel schreibt die Speicherung Paginierung info als eigene Unterstruktur innerhalb der staatlichen Struktur. Ich Stimme mit dieser Methode, aber hier, wo ich widersprechen: der Artikel schlägt vor, keying die Paginierung Teilbaum von der Art der Ressource, mit Seitenzahlen, aber was ist, wenn es mehrere Ansichten, die Anzeige paginiert Daten von der gleichen Ressource mit unterschiedlichen Parametern? Wenn Sie die Artikel Folgen einer Methode, Ihren Zustand Baum kann am Ende Aussehen wie diese

{
  pagination: 
     todos: 
       count: 1000,
       nextPageUrl: ...,
       result: [list of id's]
     users:
       count: 200,
       nextPageUrl: ...,
       result: [list of id's]
}

Scheint dies nicht für mich Sinn machen, wenn Sie haben mehrere Möglichkeiten zum anzeigen der gleichen Ressource. Was ist, wenn auf einem Bildschirm mehrere Tabellen anzeigen todos wurden geholt mit unterschiedlichen Parametern? Zum Beispiel, eine Tabelle, zeigt todos wurden, holte aus /api/todos/?userId=1 und anderen zeigt todos aus /api/todos/?userId=2.

Angesichts des oben genannten Problems, es scheint, dass eine Lösung für die weitere flexible Paginierung zu speichern Paginierung Staat auf einer pro-Komponenten-basis statt einer pro-Einheit-basis. So Ihr Zustand könnte in etwa so Aussehen

{
  pagination:
    componentId:
       count: 1000,
       nextPageUrl: ...,
       result: [list of id's]
    anotherComponentId:
       count: 1000,
       nextPageUrl: ...,
       result: [list of id's]
}

Natürlich, Speicherung Paginierung Ergebnisse wie dieses verliert Kontext, was ist mit Seitenzahlen. Aber ist das so ein problem? Wie gehen Sie über das umbrechen eines großen Staates Baum mit potenziell mehreren paginiert Ergebnisse von der gleichen Ressource? Danke!

Ich versuche, nicht zu denken in Bezug auf Personen, Ressourcen und Komponenten, so viel wie Blick auf. So ist jede Ansicht, die Sie bekommen können das eigene Paginierung. Ich denke, es ist ähnlich zu dem zweiten Beispiel oben, außer es ist nicht 1:1 gebunden an eine Komponente. Zum Beispiel könnten Sie haben eine TodoList-Komponente, die mehrere verschiedene Ansichten (d.h. es wird angezeigt, an verschiedenen Orten auf der Seite mit den unterschiedlichen Kontext, in jedem Ort).
Genau das hab ich auch gedacht, aber ich bin mir nicht sicher, wie diese Komponente erstellen können, es ist einzigartig Paginierung key innerhalb des Redux-Zustand. Wenn Sie mehrere TodoList-Komponenten innerhalb einer Seite, was wäre die mapStateToProps Funktion Aussehen? Würde der übergeordneten Komponente liefern jede TodoList-Komponente mit einer einzigartigen key requisite, die von der Komponente verwendet wird, die innerhalb mapStateToProps zu greifen, die Paginierung Staat?
Ich denke, jede Ansicht erhält seine eigene reducer, und mit combineReducers jede Ansicht erhält seine eigene Scheibe des Staates.

InformationsquelleAutor Mitch W. | 2018-01-17

Schreibe einen Kommentar