如何解决将不同尺寸的相同产品添加到购物车
我可以将不同的产品添加为单个阵列,如果添加相同的产品,也可以增加数量。但是现在我需要添加相同的产品,但尺寸不同,它应该创建另一个新数组。下面是我正在使用的代码..请帮忙.. !!
switch (action.type) {
case ADD_TO_CART:
const productId = action.product.id;
if (findIndex(state.cart,product => product.id === productId) !== -1) {
const cart = state.cart.reduce((cartAcc,product) => {
if (product.id === productId) {
// if (product.size === action.size) {
cartAcc.push({ ...product,size: parseInt(product.size),qty: parseInt(product.qty) + parseInt(action.qty),sum: (product.discount ? product.salePrice : product.price) * (parseInt(product.qty) + parseInt(action.qty)) }) // Increment qty
// } else {
// cartAcc.push(product)
// }
} else {
cartAcc.push(product)
}
return cartAcc
},[])
return { ...state,cart }
}
return {
...state,cart: [
...state.cart,{
...action.product,qty: action.qty,size: action.size,sum: (action.product.discount ? action.product.salePrice : action.product.price) * action.qty
}
]
}
解决方法
您快完成了,只需检查大小是否相等(在findIndex和后续的if中):
const productId = action.product.id;
const size = action.size;
if (findIndex(state.cart,product => (product.id === productId && product.size === size)) !== -1) {
const cart = state.cart.reduce((cartAcc,product) => {
if (product.id === productId && product.size === size) {
cartAcc.push({ ...product,size: size,qty: parseInt(product.qty) + parseInt(action.qty),sum: (product.discount ? product.salePrice : product.price) * (parseInt(product.qty) + parseInt(action.qty)) }) // Increment qty
} else {
cartAcc.push(product)
}
return cartAcc
},[])
return { ...state,cart }
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。