我需要将对象从动作添加到化简器数组中。该值首次添加到减速器中。当我再次调度该操作时,它将覆盖数组中与对象的现有值。
检查以下代码:
行动:
let itemImgObj = {
itemid: "",
itemimgurl: ""
};
export const setItemsImages = (itemid, itemimgurl) => {
itemImgObj.itemid = itemid;
itemImgObj.itemimgurl = itemimgurl;
console.log("as", itemImgObj);
return {
type: 'SET_ITEMS_IMAGES',
itemImgObj
};
};
还原剂:
const Reducer = (state = { cartItemsImages= [] }, action) => {
console.log(action);
switch (action.type) {
case 'SET_ITEMS_IMAGES':
return {
...state,
cartItemsImages: [...state.cartItemsImages, action.itemImgObj]
};
default:
return state;
}
};
如何使用每次调度操作中的对象更新数组值?
原因是您始终将 state
的值设置为空数组的cartItemsImages
。因此,每当调用化简器时,状态的值始终是一个空数组,这就是为什么它覆盖了现有值而不是附加新值的原因。
您可以执行以下代码:
// declare a new const which contains your cartItemsImages
const initialSate = {
cartItemsImages: []
};
const Reducer = (state = initialSate, action) => {
console.log(action);
switch (action.type) {
case 'SET_ITEMS_IMAGES':
return {
...state,
cartItemsImages: [...state.cartItemsImages, action.itemImgObj]
};
default:
return state;
}
};