2017-07-13 4 views
0

Ich habe Probleme mit der unten Minderer nicht den Laden nach dem ersten Lauf Aktualisierung:Redux wont Update Laden nach dem ersten Lauf (nur diese Minderer)

switch (action.type) { 
    case "SET_STARRED": 

    let starred = action.bucket.starred; 
    let active = action.bucket.active; 

    console.log("STA ", starred); 
    console.log("ACT ", active); 

    return{ 
     ...state, starred: starred, 
     ...state, active: active 
    } 

    default: 
    return state 
} 

Meine anderen Reduzierungen arbeiten groß, ist dies eine der die einfacheren so ... Initial Run legt den Laden in Ordnung, dann jedes Update der Reducer protokolliert, was ich erwarte, aber der Laden ändert sich nicht?

Habe ich etwas albern gemacht?

Ich habe überprüft und die eingespeisten Daten erscheint identisch in der Formatierung jedes Laufs und läuft nur einmal (dachte es wurde überschrieben).

Antwort

2

Es sieht so aus, als ob Sie zweimal ...state drin haben, also ist es sehr wahrscheinlich, dass das starred Feldupdate durch den alten Wert überschrieben wird.

Als Randbemerkung, können Sie diesen Code nur ein bisschen mit ES6 Destrukturierung und Objektliteral Syntax (zu gehen zusammen mit dem Objekt Spread-Syntax, die Sie bereits verwenden) vereinfachen:

const {starred, action} = action.bucket; 

return { 
    ...state, 
    starred, 
    active 
}; 
+0

Danke, das hat mich nur darüber nachdenken lassen, wo ich sonst in der Vergangenheit falsch gelaufen bin. –

1

Versuchen Sie, diese Rückkehr statt:

return Object.assign({}, state, 
    { 
     starred: starred, 
     active: active 
    } 
) 

Dadurch wird eine Kopie des Zustandes zurück, sondern mit dem ‚Markiert‘ und ‚aktiv‘ Attributen mit den neuen Werten ersetzt.

+0

Danke, das ist sauber. –

Verwandte Themen