سلام کد بهینه شده اضافه کردن به سبد خرید
case "ADD_TO_BASKET":
const productId = action.payload.productID;
if (
state.basket.findIndex((product) => product.productID === productId) !==
-1
) {
const basket = state.basket.reduce((basketAcc, product) => {
if (product.productID === productId) {
basketAcc.push({
...product,
count: product.count + 1,
});
} else {
basketAcc.push(product);
}
return basketAcc;
}, []);
newState = { ...state, basket };
} else {
newState = {
...state,
basket: [...state.basket, { ...action.payload }],
};
}
break;
ویرایش شده
case "ADD_TO_BASKET":
const productId = action.payload.productID;
const payloadCount = action.payload.count;
if (
state.basket.findIndex((product) => product.productID === productId) !==
-1
) {
const basket = state.basket.reduce((basketAcc, product) => {
if (product.productID === productId) {
basketAcc.push({
...product,
count: product.count + payloadCount,
});
} else {
basketAcc.push(product);
}
return basketAcc;
}, []);
newState = { ...state, basket };
} else {
newState = {
...state,
basket: [...state.basket, { ...action.payload }],
};
}
break;
فایل Details.js مربوط به single product قسمت input
<input
type="number"
className="form-control form-qty mr-2 w-25"
placeholder={1}
onChange={(e) => {
const { value } = e.target;
setItemCount(parseInt(value));
}}
/>