我刚刚开始学习redux
,我想知道如何在redux reducers
中访问对象组件。我想访问用户内部的address
组件,但是由于它是关键而无法访问。有办法访问吗?这是我的代码:
const initialState = {
token: localStorage.getItem('token'),
user: {},
};
export default function (state = initialState, action) {
const { type, payload } = action;
case SET_SHIPPING_ADDRESS:
return {
...state,
state.user.addresses: payload, //how to access the addresses property from here?
}
};
答案 0 :(得分:1)
您在初始状态下拥有一个user
属性,但是随后您尝试分配另一个属性state.user.buyer.addresses
,这是错误的,因为您实际上想要做的是更新{ {1}}个对象。
深度克隆addresses
对象的简便方法是先将其字符串化然后解析。
user
然后您可以分配新地址
user
最后使用新的const clone = JSON.parse(JSON.stringify(state.user));
对象更新状态
clone.buyer.addresses = payload.addresses
答案 1 :(得分:1)
扩展操作“ ...”使您可以将新值分配给对象的属性。 如果其中一个属性是一个对象,而您想为其属性之一分配一个新值,则还需要对其进行扩展,依此类推。
例如:
export default function (state = initialState, action) {
const { type, payload } = action;
case SET_SHIPPING_ADDRESS:
return {
...state,
user: {
...state.user,
addresses: payload
}
}
};