我需要将操作中的对象添加到Reducers数组中。第一次将值添加到减速器中。当我再次分派动作时,它会用对象覆盖数组中的现有值。
检查以下代码:
操作:
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;
}
};
如何通过每次调度中的操作使用对象更新数组值?
答案 0 :(得分:0)
原因是您总是将state
的值设置为空数组的cartItemsImages
。因此,每当调用reducer时,状态值始终是一个空数组,这就是为什么它覆盖现有值而不是附加新值的原因。
您可以执行以下代码:
// 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;
}
};