Javascript 从数组中删除项后,它将删除所有重复项-Redux

Javascript 从数组中删除项后,它将删除所有重复项-Redux,javascript,redux,react-redux,Javascript,Redux,React Redux,我正在用react redux制作一个购物车应用程序,我面临一个问题。我的列表中的每个项目都有一个ID,但当我添加两个具有相同ID的项目,然后突然将它们从购物车中删除时,所有具有相同ID(也称为重复项)的项目都将被删除。代码如下 Reducer.js const reducer = (state = { items: [] }, { type, payload }) => { console.log(payload); switch (type) { case "AD

我正在用react redux制作一个购物车应用程序,我面临一个问题。我的列表中的每个项目都有一个ID,但当我添加两个具有相同ID的项目,然后突然将它们从购物车中删除时,所有具有相同ID(也称为重复项)的项目都将被删除。代码如下

Reducer.js

   const reducer = (state = { items: [] }, { type, payload }) => {
  console.log(payload);
  switch (type) {
    case "ADD_ITEM":
      return {
        ...state,
        items: [...state.items, payload]
      };
    case "REMOVE_ITEM":
      const index = payload.index;
      return {
        ...state,
        items: state.items.filter(({ id }) => id !== payload.id)
      };

    case "DUPLICATE_ITEM":
      return {
        ...state
      };
    default:
      return state;
  }
};
Action.js

const addItem = item => ({
  type: "ADD_ITEM",
  payload: item
});

const removeItem = (item) => ({
  type: "REMOVE_ITEM",
  payload: item
});

const duplicateItem = () => ({
  type: "DUPLICATE_ITEM"
});

export { addItem, removeItem, duplicateItem };
Item.js

const items = [
  {
    id: 1,
    name: "projectile",
    price: "150$",
    units: 0
  },
  {
    id: 2,
    name: "cute cat",
    price: "1250$",
    units: 0
  }]

在我看来,这个问题更像是一个设计问题,也就是说,与向购物车添加N个相同的物品相比,如果物品已经存在,您可能希望增加物品的单位/数量?然后在删除时,将单位/数量减少到1,然后删除

如果您希望行为按原样工作,则需要更改从购物车中移除的方式,例如

  • 按索引而不是按ID删除
  • 在将项目添加到购物车时为其创建代理项ID,然后通过此方法删除

听起来不错,我会试试,谢谢您的回复。