У меня есть товары в корзине, и я хочу проверить, добавил ли пользователь тот же товар того же цвета и размера.
Если это так, я просто хочу увеличить количество, а не просто добавитьэто, но это создает своего рода неуклюжий редуктор, и я хотел знать, считается ли это анти-паттерном и если да, то что мы можем сделать, чтобы упростить его
export default (state = initialState, action) => {
switch (action.type) {
case 'ADD_TO_CART':
// Check to see if we already have the same product
// with the same color and size in our cart
const productIndex = state.products
.findIndex(product => product._id === action.product._id
&& product.size === action.product.size
&& product.color === action.product.color);
// if we have it already increase the quantity
if (productIndex !== -1) {
const updatedProduct = {
...state.products[productIndex],
quantity: state.products[productIndex].quantity + action.product.quantity,
};
return {
...state,
products: [
...state.products.slice(0, productIndex),
updatedProduct,
...state.products.slice(productIndex + 1),
],
};
}
// if not just save it
return {
...state,
products: [...state.products, action.product],
};
default:
return state;
}
};