Ich habe eine Menge Verwirrung, wenn es um die "richtige" Art und Weise geht, Dinge in der Redux-Welt zu tun. Nehmen wir an, ich habe einen Reducer, der eine Liste von Foos enthält, und dass diese Foos vollständig mit allen Informationen geladen werden können, die der Server über ein foo oder nur teilweise geladen hat.
In der App habe ich zwei Ansichten / Zustände, in denen ich eine Liste von Foos und eine wo ich die Details eines einzelnen Foo sehe.
Wenn ich die Details eines foo betrachte, möchte ich ein paar Schritte durchgehen, um festzustellen, ob / welche Daten ich vom Server holen muss. Dieser Entscheidungsprozess läuft ungefähr so ab:
1) Ich habe direkt zur Detailansicht des foo navigiert. Theres nichts im redux Speicher über dieses foo und ich möchte gehen, um eine vollständige Reihe von Informationen über das foo vom Server zu erhalten.
2) Ich traf vorher die Listenansicht, wo ich partielle Informationen über das foo abrufe, wenn ich die Detailansicht betrachte, möchte ich nur die zusätzlichen Informationen holen, die mir für dieses foo fehlen
3) Ich habe zuvor die foo-Ansicht eines Artikels gesehen, so dass die Informationen, die ich brauche, bereits im redux-Store sind, so dass Sie nichts mehr vom Server holen müssen
Jetzt vergessen wir, dass die Daten im redux-Speicher aktualisiert werden müssen, wenn sie veraltet sind. Ich bin verwirrt darüber, wie ich diese drei Dinge erreiche, indem ich bedingungslos Aktionen verfolge. Ich möchte im Grunde Aktionen versenden, um die Daten teilweise oder vollständig abzurufen und das ausgewählte Element zur Anzeige zu bringen.
Wenn ich in der Detailansicht bin, kann ich das Foo aus dem Laden direkt mit den Requisiten verbinden, WENN ich alle benötigten Informationen habe. Wenn nicht, muss ich eine Aktion versenden, um entweder vollständig oder teilweise zusätzliche Daten für meine foo-Daten zu erhalten. Auf der Rückseite dieser Aktion wurde abgeschlossen und der Reducer fügt das vollständige foo der Liste von foo's in meinem Zustand hinzu. Ich möchte dann das passende finden und das zu reps / state der Komponente zuweisen.
Während ich die Teile davon verstehe, muss ich erreichen, dass ich nicht weiß, wann und wo ich jeden Teil dieses Prozesses machen soll.
Zur Vereinfachung nehmen wir an, dass jedes foo eine ID hat, also ist das Finden des foo in meinem Zustand ein Filter nach dieser ID.
Ich hoffe, das macht Sinn, jede Hilfe ist willkommen, und gibt es übliche Muster für dieses "Holen aus dem lokalen Status-Cache oder auf den Server zurückgreifen, wenn es fehlt" -Konzept.
Chris
Sie können den aktuellen Redux-Status innerhalb eines asynchronen Aktionserstellers untersuchen und dann den Zustand bedingt aktualisieren. Wenn Sie also den lokalen Status vom Server aktualisieren müssen, senden Sie den Aktionsersteller und lassen Sie ihn die Entscheidungsfindung übernehmen. Sie können dies in componentDidMount
tun. Wenn Sie Redux Thunk verwenden, können Sie den aktuellen Zustand wie folgt übergeben: