我想要将多个产品添加到Collection 夹屏幕,并从那里分别删除每个产品,但当我单击添加到Collection 夹按钮时,我只能添加一个产品,如果我添加另一个产品,该产品将替换未添加的前一个产品.
上下文代码
const initialState = {
products: ProductData,
cart: [],
FavoritesList: [],
};
const reducer = (state = initialState, action) => {
switch(action.type) {
case 'ADD_PRODUCT_TO_FAVORITE':
const product = action.payload;
const index = state.FavoritesList.findIndex(
(item) => item?.id === product?.id
);
if (index !== -1) {
return {
...state,
products: state.FavoritesList.filter((_, i) => i !== index),
};
} else {
return {
...state,
products: state.FavoritesList.concat(product,),
};
}
case 'DELETE_FAVORITE_PRODUCT':
return {
...state,
products:state.products.filter((item)=> item?.id === product?.id)
};
case 'CLEAR':
return { cart: [] }
default:
throw new Error(`unknow action.${action.type}`)
}
}
Collection 夹屏幕代码
const Faviroute = () => {
const { favorites, products } = useCart();
const dispatch = useDispatch();
const Clear = (index) => {
dispatch({ type: "DELETE_FAVORITE_PRODUCT", index });
};
return (
<View
style={{
flex: 1,
}}
>
{(products.length === 0) ?
<View>
<Text>Just add the items you would & place your order here.</Text>
</View>
: <View style={{flex:1,}}>
{/*Card Container*/}
<ScrollView>
<View>
{products.map((item, index) => (
<View key={index}>
<Image source={item.image} />
<TouchableOpacity onPress={() => Clear(item)}>
<Image source={icons.love} />
</TouchableOpacity>
</View>
))}
</View>
</ScrollView>
</View>
}
</View>
)
}
任何人都可以帮助我弄清楚我如何可以轻松地添加到Collection 夹中的每一个单独的产品,并从Collection 夹列表中删除每个最喜欢的产品分别?