这里是State对象:
const initialState = {
data: {
user: '',
token: '',
}
}
减速器:
case 'DO_SOMETHING':
return {...state, data: action.payload }
如果我如上所述软拷贝状态,我将覆盖状态的整个data
部分。如何在不覆盖token
的情况下仅更新具有给定有效负载的用户?
答案 0 :(得分:4)
如果有效负载只是user
,则只需使用与state
对象相同的解构模式即可:
return {
...state,
data: {
...state.data,
user: action.payload
}
}
此模式可以根据需要嵌套,因此您可以拥有大型结构化状态对象,并且只需在有效负载中传递所需的字段即可。
答案 1 :(得分:3)
尝试一下,(考虑到action.payload是整个数据对象)
case 'DO_SOMETHING':
return {...state, data: { ...state.data, user: action.payload.user } }
答案 2 :(得分:2)
也传播嵌套对象:
return {...state, data: {...state.data, user: action.payload} }