Ich versuche, eine Backbone.Marionette App zu Reagieren zu ersetzen und habe Schwierigkeiten beim Nachdenken über Abfrageparameter. Ich denke, ich vermisse einen wirklich einfachen Frieden, wenn ich dieses Muster verstehe, also entschuldige ich mich, wenn diese Frage völlig unsinnig ist. Ich würde jede Unterstützung schätzen oder mich nur auf eine Richtung hinweisen, die ich genauer googlen kann.Wie mit Abfrageparametern in reagieren reagieren + react-Router + Fluss
Es gibt eine /users
Seite, die Benutzer auflistet, und Sie können die Benutzer über die Suchleiste filtern. Also, wenn Sie die Benutzer filtern möchten, die "Joe" in ihrem Benutzernamen enthalten, würde ich eine Anfrage an den Server mit Abfrageparametern wie /users?username=joe
stellen. Zusätzlich kann ich paginieren, indem ich auch einen page
Parameter hinzufüge (/users?username=joe&page=1
).
Wenn ich nur über die Funktionalität denken, würde der Fluss wahrscheinlich
- Der Kunde fügt
joe
mit dem Eingangselement und klickt Suche. - Klicken Sie auf die Suche Schaltfläche löst eine
Action
(wie Action.getUser). - Die
Action
stellt eine Anfrage an den Server und erhält die Ergebnisse - Die
Dispatcher
entsendet eine Funktion mit den Ergebnissen Nutzlast zu wem auch immer (in der Regel dieStore
) interessiert sich für dieAction
. - Die
Store
s change 's Zustand ändert sich mit dem neuen Ergebnis durch die durch das Hören auf dieStore
- The View (
Component
) Wieder machtAction
erhalten'.
und es funktioniert wie erwartet. Ich möchte jedoch, dass der Client das aktuelle gefilterte Ergebnis als Lesezeichen speichern und später auf dieselbe Seite zurückkehren kann. Dies bedeutet, dass ich irgendwo eine explizite Information über den Suchbegriff, den der Kunde gemacht hat, speichern muss. Dies ist normalerweise die URL (habe ich recht?). Also muss ich die URL mit Abfrageparametern aktualisieren, um den Suchbegriff zu speichern (/users?username=joe&page=1
).
Was ich verwirrt bin, wo und wann die URL aktualisieren? Was ich jetzt herausfinden kann, sind die 2 Optionen unten - und sie scheinen überhaupt nicht sauber zu sein.
Option 1
- Der Kunde
joe
auf das Eingangselement fügt klickt und Suche. - Klicken Sie auf die Schaltfläche Suche Schaltfläche löst einen Übergang des ReactRouter mit den neuen Abfrageparameter (
/users?username=joe&page=1
). - Die Ansicht (
Component
) empfängt die neuen Parameter überthis.props.params
undthis.props.query
. - Die Ansicht (
Component
) feuert eineAction
wieAction.getUser
abhängig von den Abfrageparameter, die es empfängt - in diesem Fallusername=joe&page=1
.
Danach wird es das gleiche ist wie oben
Option 2 (nur 6 unterscheidet sich von dem, was ich oben erläutert)
- Der Kunde
joe
mit dem Eingangselement einfügt und Klicks Suche. - Klicken Sie auf die Suche Schaltfläche löst eine
Action
(wie Action.getUser). - Die
Action
stellt eine Anfrage an den Server und erhält die Ergebnisse - Die
Dispatcher
entsendet eine Funktion mit den Ergebnissen Nutzlast zu wem auch immer (in der Regel dieStore
) interessiert sich für dieAction
. - Die
Store
s change 's Zustand ändert sich mit dem neuen Ergebnis durch die durch das Hören auf dieStore
- The View (
Component
) Wieder machtAction
erhalten'. Und irgendwie (ich weiß nicht, wie noch) nicht aktualisiert seine URL in Abhängigkeit von seinemprops
(wiethis.props.searchusername
undthis.props.searchpage
)
Was ist die beste Praxis Abfrage params zum Umgang mit? (oder dies ist möglicherweise nicht speziell für Abfrageparameter) Ich missverstehe das Designmuster oder die Architektur vollständig? Vielen Dank im Voraus für jegliche Unterstützung.
Einige Artikel Ich habe lesen
- Any way to get current params or current query from router (outside of component)?
- Async data and Flux stores
- Make it easier to add query parameters
- React Router and Arbitrary Query Params: Page Refreshes Unintentionally on Load?
- Add default params?
Danke für den Vorschlag. Damit jemand das Suchergebnis mit einem Lesezeichen versehen kann, dachte ich, dass Sie einige explizite Informationen über den Suchbegriff benötigen würden. Welches wäre die URL? Habe ich recht damit? Ich bin immer noch nicht klar, wie die URL aktualisiert wird, wenn der Benutzer auf die Schaltfläche Suchen klickt. Ist Option 1 näher an Ihrer Lösung? Tut mir leid, dass ich nicht genug Wissen habe. Ich schätze deine Hilfe sehr. – kenfdev
Ich sehe was du meinst. Ich glaube, Sie suchen nach https://github.com/rackt/react-router/blob/57543eb41ce45b994a29792d77c86cc10b51eac9/doc/06%20Mixins/Navigation.md – yujingz
Grundsätzlich navigieren Sie auf die gleiche Seite mit Params (in diesem Fall Ihre Suchbegriffe) – yujingz