我有一个状态,里面有多个对象。现在我可以修改第一层的所有元素,比如 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
}
};
使用循环可以吗?我试过用Map或foreach,没有工作。我还尝试在spread操作符中调用property,类似于以下内容:
return { ...state, altaUsuario[cat] : action.payload}
但是它给了我一个语法错误。
如果有必要,我还可以修改有效载荷。
你知道吗?
2条答案
按热度按时间7rfyedvj1#
你可以试试这样的
return { ...state,user : {...state.user ,identification :action.payload }}
eivnm1vs2#
如果你行动有效载荷是
你必须覆盖标识属性