2017-02-15 1 views
0

Ich bin gerade mit Redux eingeführt, und bin mit einem Problem der Vorbelastung des Staates für einige Zeit stecken.In redux, preloading state mit combinateReducers verwenden

Bei Verwendung eines einzigen Druckminderers verwendete ich den folgenden Code und es funktionierte gut. Relevante Schnipsel ::

const head = (state = {}, action) => { 
switch (action.type) { 

    case 'TOGGLE_VISIBLITY': 
    if (state.head.content !== action.id) { 
     return state 
    } 
    state.body.visible = !state.body.visible; 
    return state; 

    default: 
     return state 
    } 
} 

const heads = (state = [], action) => { 
    switch (action.type) { 
     case 'TOGGLE_VISIBLITY': 
    state.body = state.body.map(t => 
    head(t, action) 
); 
} 
return state; 
} 

export const store = createStore(heads, config); 

Aber anstatt dies ich nur combinerReducers geändert, und es begann JS Fehler thowing.

Unerwartete Schlüssel "head", "body" im preloadedState-Argument gefunden, das an createStore übergeben wurde. Es wird erwartet, stattdessen einen der bekannten Reduzierschlüssel zu finden: "Köpfe". Unerwartete Schlüssel werden ignoriert.

Mein Wechsel war ::

const plannerApp = combineReducers({ 
    heads 
}); 

export const store = createStore(plannerApp, config); 

Falls wollen Sie den vollständigen Code überprüfen, bitte here besuchen.

Jede Hilfe ist sehr bemerkenswert. Vielen Dank im Voraus .. Ich schätze Ihre Zeit und Bemühungen ...

Antwort

3

Kurz gesagt, muss der vorgespannte Zustand der Struktur Ihrer Reduzierstücke entsprechen. Da Sie auf combineReducers umgestellt haben, hat sich Ihre Statusbaumstruktur geändert. Sie haben nun einen Top-Level-Schlüssel von heads, die ein Kind Schlüssel body hat, so müssen Sie wahrscheinlich Ihre config aussehen aktualisieren:

export default { 
    heads: { 
    body: { 
     ... 

So wie es jetzt ist, das config Objekt enthält Top-Level-Schlüssel von head und body, die keine Einträge auf der obersten Ebene Ihres Statusbaums haben.

Verwandte Themen