أحمد عبد الله2 نشر 15 أغسطس 2021 أرسل تقرير نشر 15 أغسطس 2021 import {ADD_TO_FAVORITE, REMOVE_FROM_FAVORITE, CLEAR_FAVORITE} from '../types'; interface InitStateInter { myFavorite: []; } const initialState: InitStateInter = { myFavorite: [], }; const myFavorite = (state = initialState, action: any) => { switch (action.type) { case ADD_TO_FAVORITE: return { ...state, myFavorite: [...state.myFavorite, action.payload], }; case REMOVE_FROM_FAVORITE: return { ...state, myFavorite: state.myFavorite.filter( favItem => favItem !== action.payload, ), }; case CLEAR_FAVORITE: return {...initialState}; } return state; }; export default myFavorite; عندما اضيف منتج اخر للمفضلة فانه يتحقق ان كان موجود لايضيفة مرة اخرى 1 اقتباس
1 Wael Aljamal نشر 15 أغسطس 2021 أرسل تقرير نشر 15 أغسطس 2021 يعتمد الأمر على بنية المنتج (العنصر الذي تضيفه للبطاقة) فإذا كان يحوي خاصية تدعى العدد quantity فعليك المرور على المصفوفة و البحث عن هذا العنصر و تعديل الخاصية فيه بزيادتها ب 1، وإن لم يكن موجود، تقوم بإضافته للمصفوفة case ADD_TO_FAVORITE: { let flag = false; this.itemsInCart.forEach(el => { if (el.itemId == itemDetails.objectId) { el.qty += 1; flag = true; return false; } }) if (!flag) { this.itemsInCart.push({ itemId: itemDetails.objectId, itemName: itemDetails.dishName, itemPrice: itemDetails.price, qty: 1 }); } return { ...state, myFavorite: [...state.myFavorite, action.payload], }; } يمكن تحقيق ذلك بأكثر من طريقة.. array.indexOf(newItem) === -1 && array.push(newItem); أو Array.prototype.pushUnique = function (item){ if(this.indexOf(item) == -1) { this.push(item); return true; } return false; } /////////////// var newItem = "NEW_ITEM_TO_ARRAY"; var array = ["OLD_ITEM_1", "OLD_ITEM_2"]; array.indexOf(newItem) === -1 ? array.push(newItem) : console.log("This item already exists"); console.log(array) ** إن كان العنصر موجود نزيد تكراره وإلا نضيفه، وبالحذف إن كان موجود نقلل تكراره وإن أصبح 0 نحذفه من المصفوفة 1 اقتباس
السؤال
أحمد عبد الله2
عندما اضيف منتج اخر للمفضلة فانه يتحقق ان كان موجود لايضيفة مرة اخرى
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.