Я пытался удалить встречу из плоского списка, но когда getAppointment повторно монтируется, он возвращает все встречи пользователя, включая те, которые должны быть удалены.
Это мой метод getAppointment
async getAppointment() {
var snapshot = await db.collection('appointment')
.orderBy('createdAt', 'desc')
.get()
const options = {
year: 'numeric', month: 'numeric', day: 'numeric',
hour: 'numeric', minute: 'numeric',
hour12: false,
};
const currentUser = firebase.auth().currentUser.uid;
const dateFormat = new Intl.DateTimeFormat('en-UK', options);
const dateList = snapshot.docs.filter((doc) => (
doc.data().uid === currentUser)).map(doc => {
const dateObj = new Date(doc.data().date.seconds * 1000);
const createdAtObj = new Date(doc.data().createdAt.seconds * 1000);
return {
key: doc.id,
date: dateFormat.format(dateObj),
createdAt: dateFormat.format(createdAtObj),
}
});
this.setState({
dateItems: dateList,
loading: false,
})
}
И это должно удалить встречу.
onDelete = () => {
const newDateList = [...this.state.dateItems];
newDateList.splice(this.state.selectedIndex, 1);
this.setState({
dateItems: newDateList,
loading: false,
})
console.log(newDateList);
this.props.navigation.popToTop();
}
deleteDate() {
db.collection('appointment')
.doc().delete()
.then(() => {
Alert.alert("Appointment deleted!")
})
.catch((error) => alert(error));
this.onDelete();
}
Значок onPress()
запускает функцию deleteDate()
в плоском списке.