我正在react / redux应用程序中构建购物车,无法从我的数组中删除商品。
这是我现在拥有的代码。
case REMOVE_ITEM:
const cloned_array = state.items.slice()
cloned_array.splice(action.payload, 1)
return { ...state, items: cloned_array }
我正在尝试在状态内克隆项目数组。然后在我的action.payload中将该数组与索引一起发送给reducer。然后返回状态,并将items数组设置为clonedArray。
这导致我的items数组中的第一项被删除,而不是位于发送到reducer的索引中的项。
答案 0 :(得分:1)
您可以使用.filter()
通过一种方法来执行此操作。它达到了.slice
想要达到的相同目标,但是现在您无需将切片的输出保存在单独的数组中。
case REMOVE_ITEM:
return {
...state,
items: state.items.filter((item, index, array) => {
return index !== action.payload
})
}