Когда я работаю с редуктором с подчеркиванием, не позволяю использовать Object.assign, так как приходится поддерживать браузеры.Я пишу редуктор следующим образом:
const actionHandlers = {
[actionTypes.SELECT_OPTION](state, payload) {
_.each(state.options, option => option.selected = option.value === payload.value);
return state;
}
};
Тогда я понимаю, что должно возвращать новое состояние, не должно использовать каждое, поскольку у каждого из них есть побочные эффекты, которые будут мутировать исходное.
Затем я заменяю каждый на карту:
const actionHandlers = {
[actionTypes.SELECT_OPTION](state, payload) {
return [
...state,
{ options: _.map(state.options, option => option.selected = payload.value === option.value)}
];
}
};
Кажется, что я назначаю только что созданный объект и возвращаю новое состояние без изменения исходного, но когда я регистрирую их, исходноесостояние также было видоизменено.
Любой совет был бы оценен!