2016-08-29 4 views
0

Ich benutze Redux, um den Zustand der Ansicht so zu halten, wenn Benutzer zurückkommen, haben sie genau die gleiche Ansicht und Einstellungen, die sie zuvor ausgewählt haben, ich emittiere Ereignisse auf dem Server und repliziert die Änderungen in einem Geschäft auf dem Backend und Speichern des Zustands auf der Datenbank.Überprüfen der Integrität des Redux-Status bei der Initialisierung

Jedes Mal, wenn ein Benutzer anmeldet wir seine erhalten Einstellungen dieses cide mit:

if(!user.state){ 
      socket.store = redux.createStore(reducer); 
     }else{ 
      socket.store = redux.createStore(reducer, user.state); 
     } 

Das Problem entsteht, wenn ich auf der Datenbank veraltet gespeichert neue Reduzierungen für neue Funktionen und den Zustand hinzugefügt werden soll, wenn ich versuchen, den alten Zustand Objekt in die creates Funktion übergeben ich

[Error: Reducer "fooReducer" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may n 
ot be undefined. 

Und meine Reduzierungen erhalten:

//this is a new reducer 
function fooReducer(state, action) { 
    if (!state) { 
     state = defaultState.foo 
    } 
    switch (action.type) { 
    ... 
     default: 
      return state 
    } 

} 

module.exports = combineReducers({ 
    theme: themeReducer, 
    settings: settingsReducer, 
    foo: fooReducer, 
}); 

Sollte der Reducer nicht auf undefinierten Zustand prüfen? Was wäre die beste Vorgehensweise, um diese und zukünftige Szenarien zu behandeln, wenn ich neue Reduzierungen hinzufügen möchte?

Ich denke, eine Funktion zu schreiben, wenn jede Taste auf dem Zustand initialisiert zu überprüfen, aber dies scheint wie etwas sollte das Reduktions bereits

Antwort

0

fand ich tun, dass das Problem war, weil ich keinen Wert festgelegt haben für foo im Standardzustand

defaultState.foo = {x: 'var'} 
Verwandte Themen