2016-05-01 8 views
1

ich Redux und meinen Speicher bin mit meinem Minderer anschaut Art, wie diesesunveränderlichen Zustand zurück mit einem dynamischen Schlüssel

const initialState = { 
    'ui': { 
    'showModal': {}, // contains the `userId`: true || false 
    } 
} 

so etwas wie

case actions.OPEN_MODAL: 
return Object.assign(
    {}, 
    state, 
    state.ui.showModal[action.userId] = true // <- I think it is actually mutating instead of returning a copy of the state 
) 

Wie kann ich eine Kopie des Zustands zurückkehren und nicht mit action.userId als Schlüssel von showModal mutieren?

Antwort

4

Yup, du mutierst. Stattdessen sollten Sie ein neues Objekt zuweisen:

const newState = { 
    ui: { 
     showModal: {}, 
    } 
}; 
newState.ui.showModal[action.userId] = true; 

return Object.assign(
    {}, 
    state, 
    newState, 
)