Javascript 从数组中删除项后,它将删除所有重复项-Redux
我正在用react redux制作一个购物车应用程序,我面临一个问题。我的列表中的每个项目都有一个ID,但当我添加两个具有相同ID的项目,然后突然将它们从购物车中删除时,所有具有相同ID(也称为重复项)的项目都将被删除。代码如下 Reducer.jsJavascript 从数组中删除项后,它将删除所有重复项-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
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,然后通过此方法删除