Я отправляю действие, которое выглядит следующим образом:
{ type: "TOGGLE_FARA", fara: true, id: "5d20d019cf42731c8f706db1" }
«Идентификатор» просто используется для идентификации правильного пользователя.Действие предназначено для изменения свойства «enabled» моего состояния «fara».Раздел fara моего магазина выглядит так:
{
fara: {
enabled: false, // This need to be flipped...
names: []
},
senators: {
enabled: false,
names: []
},
senateCandidates: {
enabled: false,
names: []
}
}
Однако я не уверен, как структурировать мой редуктор.Я только хочу изменить свойство "enabled".Я пробовал несколько разных способов:
export default (state = DEFAULT_STATE, action) => {
switch (action.type) {
case "INITIALIZE_SETTINGS":
return {
fara: action.fara,
senators: action.senators,
senateCandidates: action.senateCandidates,
emails: action.emails
}
case "TOGGLE_FARA":
return {
...state,
// fara['enabled']: action.fara <–– This won't compile...
// 'fara.enabled' : action.fara <–––This just gives me a key name with the string 'fara.enabled'
}
default:
return state;
}
Я собирался сделать что-то подобное, но это напрямую изменяет состояние, которое вы не должны делать (мое расширение для избыточного инструмента говорит, что состояниято же самое, что не идеально).Есть мысли?
export default (state = DEFAULT_STATE, action) => {
switch (action.type) {
case "INITIALIZE_SETTINGS":
return {
fara: action.fara,
senators: action.senators,
senateCandidates: action.senateCandidates,
emails: action.emails
}
case "TOGGLE_FARA":
state.fara.enabled = action.fara;
return {
...state
};
default:
return state;
}