У меня есть два экрана в StackNavigator, один с FlatList, который отображает данные, извлеченные из Firestore, и другой для добавления новых данных в базу данных. После возврата со второго экрана в стеке с помощью navigation.goBack () новый элемент должен быть добавлен в список. Вместо этого все состояние с новым элементом добавляется к старому состоянию. Данные базы данных не содержат дубликатов, и после ссылки sh список содержит правильные элементы.
Я не могу сказать, неправильно ли я понимаю жизненный цикл компонента или сам запрос, поэтому буду признателен за любую помощь.
export default class Main extends React.Component {
state = { chatData:[] }
componentDidMount = () => {
// Make call to Cloud Firestore
// for the current user, retrieve the chat document associated with each element in the chats id array
let user = firebase.auth().currentUser;
firestore().collection("users").doc(user.uid).onSnapshot((doc) => {
doc.data().chats.map((element) => {
firestore().collection("chats").doc(element).onSnapshot((doc) => {
this.setState({chatData: [...this.state.chatData,
{id: element, subject: doc.data().subject, course: doc.data().course}]})
})
});
})
}
состояние после добавления курса и возврата к экрану списка (дубликат элемента)