Die Frage der Anwendungsarchitektur. Angenommen, es gibt viele Komponenten (look at the picture) (Netz) auf einer Seite. Gibt es eine bessere Möglichkeit, die wichtigsten Kinderkomponenten (aktiv/nicht aktiv) zu wechseln? Und Seiten (1, 2, 3, nächste)? Kann ich den react-Router für beide Aufgaben verwenden? P.S .: Ich benutze ReactJS zum RendernReagieren, Redux, React-Router?
Antwort
Ich würde nicht react-Router für Ergebnisfilterung verwenden. Da Sie Redux verwenden, können Sie Ihre Reduzierungen in Hauptabschnitte aufteilen und den Status aktiv/nicht aktiv sowie die aktuelle Seite pro Abschnitt in einem Geschäft beibehalten.
Ich denke, Sie sollten react-Router auf dieser Seite nicht verwenden müssen.
Sie sollten den Zustand kontrollieren (aktiv/nicht aktiv, 1,2,3, next) durch Druckminderer, wie unten:
case NEXT_PAGE:
return {...state, list:[{active:0, ...others},{active:1, ...others},...], page: 1};
Und Sie können die Daten, die Sie auf diese angezeigt werden sollen Seite von Requisiten.
mapStateToProps(state) {
return {
list: state.xxx.list,
currentPage: state.xxx.page
totalPage: state.xxx.total
}
}
Der Schlüssel ist der Anwendungsfall. Wenn Sie folgende Anwendungsfälle haben:
- Ein Benutzer kopieren Sie den Link des gefilterten Ergebnis und Seite einfügen und mit anderen
- Ein Benutzer ein Lesezeichen eines gefilterten Ergebnisseite teilen, und kommen später darauf zurück.
Dann würde ich definitiv sagen, verwenden Sie die Reaktion Router.
Sie können eine Route wie diese: <Route path="main/:status/:page" component={Main}/>
Dann würde das params-Objekt als Requisiten, um Ihren Hauptbestandteil injiziert werden.
Wenn Benutzer auf die Schaltflächen klicken, würden Sie die push
von React-Router verwenden, um die Route oder die einfach Link
von Reagieren Router ändern. (statt Versandaktion mit Redux oder this.setState
zu verwenden, wenn Sie als lokalen Status gespeichert haben).
Ich denke, es ist nicht schwieriger, als es mit dem redux oder lokalen Zustand zu speichern, mit dem zusätzlichen Vorteil von mehr Anwendungsfällen oben.
Wenn Sie eine solide und skalierbare Anwendungsarchitektur wollen, würde ich vorschlagen, ein Starterkit zu verwenden.
Das Wiki eines guten Starterkits beschreibt die gewählten Konstruktionsprinzipien.
Eines meiner Lieblings Starter-Kits mit einem Headless Backend zu kombinieren ist React Redux starter kit.
- 1. Login App mit Redux & ReactRouter
- 2. Reagieren-Redux context.router.isActive
- 3. Reagieren Router + Redux?
- 4. Reagieren Redux append Komponenten
- 5. Reagieren Redux -. Conditional Wähler
- 6. Zugriff redux ohne reagieren
- 7. Reagieren Redux Kombinieren Reducers
- 8. Reagieren, Redux und unveränderbar
- 9. Reagieren Redux Element nicht
- 10. Reagieren/Redux + Soundcloud API
- 11. Reagieren Redux async Aktion
- 12. Reagieren + Redux Update-Problem
- 13. Reagieren-Redux connect nicht
- 14. Reagieren Redux unerwartete Schlüsselspeicher
- 15. Typoskript reagieren/Redux
- 16. Reagieren/Redux, mehrere Aktionen mit Redux Thunk
- 17. Reagieren und Redux - ComponentDidUpdate Async?
- 18. Reagieren Redux mapDispatchToProps vs this.props.dispatch
- 19. Reagieren Redux Router nicht Routing
- 20. Reagieren & Redux mit dynamischen Elementen
- 21. reagieren/redux nicht zurück senden
- 22. zu redux verbinden reagieren Versuch
- 23. Redux thunk in reagieren nativen
- 24. Reagieren Native + Redux: connect Problem
- 25. Reagieren redux Anbieter grand Kind
- 26. Reagieren Redux async Aktion Fehler
- 27. reagieren-Preloader-Symbol mit redux
- 28. Zustand in reagieren mit redux
- 29. Reagieren/Redux Wo Staat retten
- 30. Reagieren Redux + Saga Image Karussell
Hängt davon ab: Sollte jede untergeordnete Komponente eine eindeutige URL haben, wenn sie aktiv ist? Wenn ja, kann React Router trivial tun, was Sie wollen. Wenn nein, dann verwenden Sie besser den Status in der übergeordneten Komponente, um zu entscheiden, welches Kind gerendert werden soll. –
Lustige Sache ist, ich dachte, du hättest ein lateinisches Verb verfärbt./OT –