【发布时间】:2021-01-10 00:57:00
【问题描述】:
我可以将不同的产品添加为单独的数组,如果添加相同的产品,也可以增加数量。但现在我需要添加相同的产品但大小不同,它应该创建另一个新数组。下面是我正在使用的代码..请帮忙..!!
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,是yourArray.findIndex还是你的特殊功能? -
这是特殊功能
export const findIndex = function (array, cb) { if (array) { for (let i = 0; i < array.length; i++) { if (true === cb(array[i])) return i; } } return -1; }
标签: javascript reactjs redux shopping-cart reducers