【发布时间】:2021-10-28 21:18:25
【问题描述】:
我的项目中有 2 个组件。
我的项目中的购物车列表和购物车项目
在购物车列表中,我得到了类似的东西。
const examCartItemList = [
{
name: 'Mocasines Pastoret 01',
description: 'Leather Loafer with Penny Bar',
},
{
name: 'Mocasines Pastoret 02',
description: 'Leather Loafer with Penny Bar',
},
{
name: 'Mocasines Pastoret 03',
description: 'Leather Loafer with Penny Bar',
},
];
const CartList = ({navigation}) => {
const [itemList, setItemList] = useState(examCartItemList);
const removeItem = name => {
const filteredArray = itemList.filter(item => item.name !== name);
setItemList(filteredArray);
};
return (
<View style={[styles.pageContainer]}>
{itemList.map((cartItem, index) => (
<CartItem
removeItem={removeItem}
index={index}
key={index.toString()}
cartItem={cartItem}
/>
))}
</View>
)
我将 removeItem 函数传递给子组件。由于我在 cartItem 组件中添加了删除按钮。
据我了解,该功能将删除我选择的项目。哪个工作正常。
问题是来自child component 的number of cart item 行为异常
在我的子组件中
我得到了这样的东西
const CartItem = ({cartItem, removeItem, index}) => {
const [productCount, setProductCount] = useState(1);
const decreaseProductCount = () => {
if (productCount > 1) {
setProductCount(productCount - 1);
}
};
return (
<View style={styles.componentContainer}>
<View>
<Image style={styles.componentImage} source={cartItem.source} />
</View>
<View style={styles.componentContent}>
<View style={styles.cartItemNameContainer}>
<Text style={[styles.nameText, styles.textDescription]}>
{cartItem.name}
</Text>
<TouchableOpacity onPress={() => removeItem(cartItem.name)}>
<Text style={globalStyle.normalText}>X</Text>
</TouchableOpacity>
</View>
</View>
</View>
正如您在图片中看到的那样,正在发生的事情。如果删除名称为01 的项目。项目01 其自身被删除,但子项计数的删除与父项不同。如果我删除项目01,则应删除计数 3,但应删除计数 7
这是图片
【问题讨论】:
标签: reactjs react-native