Я создаю корзину в приложении Android. Я застреваю при удалении товаров из корзины. Моя система проста. Когда кто-то что-то добавляет в корзину: один объект сначала сохраняется в AsyncStorage. Затем в моем компоненте корзины я также получаю элемент с AsyncStorage. Этот товар называется «корзина».
В просмотрах моей корзины у меня есть изображение, цена и количество каждого товара. Две кнопки позволяют пользователю изменять количество каждого элемента. Но я застреваю с удалением элемента. Я использую слайс, чтобы заставить элемент исчезнуть, но он просто исчезает из моего компонента корзины, а элемент все еще находится в AsyncStorage, поэтому каждый раз, когда я обновляю sh компонент корзины, элементы, которые были удалены с помощью фрагмента, снова появляются с функцией GetItem.
Итак, я пытаюсь удалить объект из AsyncStorage и из моего компонента корзины. Это моя корзина предметов AssyncStorage:
onClickAddCart(data){
const itemcart = {
food: data,
quantity: 1,
price: data.price
}
AsyncStorage.getItem('cart').then((datacart)=>{
if (datacart !== null) {
// We have data!!
const cart = JSON.parse(datacart)
cart.push(itemcart)
AsyncStorage.setItem('cart',JSON.stringify(cart));
}
else{
const cart = []
cart.push(itemcart)
AsyncStorage.setItem('cart',JSON.stringify(cart));
}
alert("Add Cart")
})
.catch((err)=>{
alert(err)
})
}
}
Это мой товар
componentDidMount(){
AsyncStorage.getItem('cart').then((cart)=>{
if (cart !== null) {
const cartfood = JSON.parse(cart)
this.setState({dataCart:cartfood})
}
})
.catch((err)=>{
alert(err)
})
}
Это моя система корзины
onChangeQuat(i, type){
const cart = this.state.dataCart
let cant = cart[i].quantity;
if(type){
cant = cant + 1
cart[i].quantity = cant
this.setState({
dataCart:cart
})
}
else if (type == false&&cant>=2){
cant = cant -1
cart[i].quantity = cant
this.setState({
dataCart:cart
})
}
else if (type==false&&cant==1){
AsyncStorage.setItem(cart, JSON.stringify({quantity: null }));
cart.splice(i,1)
this.setState({
dataCart:cart
})
}
}
Ошибка, которую я получаю: «Вы пытаетесь установить ключ '0' со значением ..." количество ": 1 ... для объекта, который должен быть неизменным и был замороженная.