当我在菜单页面上时,用户可以检查菜单项以将其添加到购物车,然后将所选项目添加到购物车。如果 cart.selecteditems.length > 0,用户可以打开购物车模式,还可以增加数量或减少或从模式中删除商品。但是,当用户删除该项目并关闭模式时,被删除的菜单项的复选框仍将被选中。我需要再次获取菜单,以便页面可以重新呈现,并且只应检查添加的项目。
复选框代码
const cart = useSelector(state => state.cart)
const checkedAlreadyAdded = (id) => {
let alreadyExist = cart.selectedItems.findIndex((obj)=> obj.itemId == id) i
if(alreadyExist < 0){
return false
}else{
return true
}
}
<BouncyCheckbox
onPress={()=>addItemToCart(item)}
isChecked={checkedAlreadyAdded(item.id)}
/>
因此,当购物车减速器在 selectedItems 中进行更改时,checkox 不会更新其检查值。
请小心定位对象的 id。在检查您的 id 的 findIndex 函数中,您可以使用 obj.itemId 来定位它,同时在组件级别发送 item.id 参数。
对我来说,disableBuiltInState 有效:
<BouncyCheckbox
onPress={()=>addItemToCart(item)}
isChecked={checkedAlreadyAdded(item.id)}
disableBuiltInState
/>