У меня есть состояние с несколькими объектами внутри. Прямо сейчас я могу изменить все элементы первого уровня, например, свойство step . Но я хочу знать, как изменить элементы из объекта внутри моего состояния.
Исходное состояние
const initialState = {
step : 1,
user: {
identification : {
email: '',
username: '',
},
localization: {
address: '',
country: '',
}}
Моя полезная нагрузка - это объект:
identification : {
email: "some@html.com"
username: "s032190" }
А мой rootReducer такой:
function rootReducer(state = initialState, action) {
switch (action.type) {
case ADD_USER:
return { ...state, user: action.payload }
case CHANGE_STEP:
return { ...state, step: action.payload }
case ADD_FIELD:
Object.keys(state.altaUsuario).forEach (cat => {
return { ...state.user, [cat] : action.payload}
})
default:
return state
}
};
Можно ли использовать цикл? Я пытался с картой или foreach, ничего не работает.
Я также пытался вызвать свойство в операторе распространения, что-то вроде этого:
return { ...state, altaUsuario[cat] : action.payload}
Но это дает мне синтаксическую ошибку.
Я также могу изменить полезную нагрузку, если это необходимо.
Есть идеи?