Ich arbeite an einer React/Redux/Thunk/React Router-Anwendung und es scheint, dass der Status bei jedem Rendern einer Komponente unerwartet in den Standardzustand für jeden Reduzierer zurückkehrt.Der Status scheint jedes Mal auf den Standard zurückzusetzen, wenn eine Komponente rendert
Zum Beispiel:
ich auf die Homepage Route zu finden, machen die Homepage Komponente und Zustand richtig eingestellt ist - Der neue Status in der Ausgabe von loggerMiddleware wie erwartet zeigt und die Anwendung funktioniert wie erwartet.
Wenn ich dann zu einer anderen Route blättern und eine EventPage-Komponente rendern, ist es als wäre der Status leer/Standard - das state
Argument in mapStateToProps ist einfach eine Liste leerer Objekte, als ob ich die Standardausgabe sehen würde von Mähdreschern. Ich sehe das Gleiche in der Ausgabe von loggerMiddleware. Wenn ich wieder zur Homepage-Komponente zurück blicke, ist der Status wieder leer/Standard.
Meine Erwartung ist, dass der Zustand zwischen Seitenaufrufen/Komponentenrendern bleiben würde. Ist das korrekt?
Einige Auszüge aus der Anwendung in Frage, falls es keine Fehler bei der Identifizierung hilfreich ist ich mache - Happy mehr als gut zu bieten:
Den Boden des Eventpage und Homepage-Komponenten/Behälters:
export default connect(mapStateToProps, mapDispatchToProps)(HomePage);
export default connect(mapStateToProps, mapDispatchToProps)(EventPage);
Der Router wie in index.js
ReactDOM.render(
<Provider store={store}>
<Router history={browserHistory} >
<Route path="/" component={HomePage}/>
<Route path="EventsSimpleList" component={EventsSimpleList}/>
<Route path="events/:eventId" component={EventPage}/>
</Router>
</Provider>
, document.querySelector('#root'));
Meine rootReducer Definition definiert:
Ihre Erwartungen sind richtig, wir müssen mehr Code sehen. Vielleicht rufst du 'createStore' mehr als einmal an? oder sogar ReactDom.render mehr als einmal? vielleicht ändern Zustand in Reducer? – azium
@azium, ich fand eine Antwort auf eine andere Frage bei http://stackoverflow.com/a/34813184/479891, die besagt, dass "Es gibt keine Möglichkeit, wie Ihr Geschäft zwischen zwei verschiedenen HTTP-Anforderungen gespeichert werden kann." Wenn ich richtig verstehe, scheint dies mit Ihrem Kommentar zu kollidieren, dass meine Erwartung richtig ist, dass "Zustand zwischen Seitenaufrufen/Komponentenrendern bestehen bleibt". Vielleicht ist das Verhalten, das ich in dieser Frage beobachte, zu erwarten? –
Diese Antwort sagt ausdrücklich, dass die Reparatur React Router ist, was Sie tun. Wenn Sie einen clientseitigen Router verwenden, laden Sie das JavaScript, mit dem Ihr Geschäft erstellt wird, nicht erneut, sodass es über Routen hinweg bestehen bleibt. Das Problem ist an anderer Stelle in Ihrem Code. Wie servieren Sie die App? Durch Webpack Dev-Server oder Express? Passiert das sowohl bei Dev als auch bei Prod? – azium