I have a problem with firebase. Everything is ok and works but if i too much call onBuyHandler function (if i click too much times buy button (because it calls this function)) the value is resetting and is setting from 1 and I don't know why. Can someone help me?
This function:
const onBuyHandler = (event) => {
const db = ref(database);
const foodRef = ref(
database,
`users/${user.uid}/items/${props.room}/${props.item.name}`
);
get(foodRef)
.then((snapshot) => {
if (snapshot.hasChild('name')) {
runTransaction(foodRef, (data) => {
if (data) {
data.amount++;
invCtx.setItems((prevState) => {
const newState = { ...prevState };
newState[props.item.name] = data;
return { ...newState };
});
}
return data;
});
} else {
set(foodRef, {
name: props.item.name,
amount: 1,
});
invCtx.setItems((prevState) => {
const newState = { ...prevState };
newState[props.item.name] = {
name: props.item.name,
amount: 1,
};
return newState;
});
}
})
.catch((error) => {
console.log(error);
});
};