【发布时间】:2021-07-15 15:55:04
【问题描述】:
当我从购物车中移除商品时,我遇到了挑战,购物车并未从购物车中移除商品,而是添加了空白商品
这是购物车屏幕
ScrollView>
{this.props.cartItems.map((item, index) => {
return (
<Menu key={index} style={{ padding: 0.5 }}>
<MenuImage source={item.image}/>
<MenuInfor>
<Text dark bold>{item.name}</Text>
<Text dark small>{item.info}</Text>
<Text dark bold>${item.price}</Text>
</MenuInfor>
<TouchableOpacity
onPress={() => this.props.removeItem(item.id)}
style={{alignItems: 'flex-end', justifyContent: 'flex-end', alignSelf: 'flex-end'}}
>
<AntDesign name="minuscircleo" size={30} color="#000" />
</TouchableOpacity>
</Menu>
)
})}
</ScrollView>
以下是我的action.js文件
const addToCart = (id, count) => (
{
type: 'ADD_TO_CART',
payload:{
id,
count,
}
}
);
// removeFromCart
const removeFromCart = (id) => (
{
type: 'REMOVE_FROM_CART',
id,
count,
}
);
以下是我的 reducer.js 文件
const cartItems = (state = [], action) => {
switch (action.type) {
case 'ADD_TO_CART':{
return [...state, action.payload ]
}
case 'REMOVE_FROM_CART':
return [...state, state.filter(cartItem => cartItem.id !== action.payload.id)]
case 'CLEAR_CART':
return {
...state,
cartItems: ['']
}
}
return state
}
export default cartItems
【问题讨论】:
-
能分享一下reducer的初始状态吗?
-
我相信你在reducer 'REMOVE_FROM_CART' 部分的return 语句有些不正确。我不确定如何准确解决您的问题,但您的其他返回语句正在返回对象,而您的删除购物车返回一个数组。你可以试试这样的:
return { ...state, cartItems: state.cartItems.filter(....)};
标签: react-native redux react-redux