Хорошо, я надеюсь, что смогу объяснить это хорошим способом.
Я создаю приложение (с реагировать на родной), где сообщения могут быть просмотрены. На главном экране вы можете увидеть значок с непрочитанными / новыми сообщениями. Почему-то это не работает при первой загрузке приложения, но когда я перехожу на другой экран и возвращаюсь домой, он показывает значок (после небольшой задержки вы увидите это в коде).
Хотя это, кажется, работает, я думаю, что есть возможности для улучшения, поэтому я надеюсь, что один из вас может взглянуть на код и посмотреть, где можно сделать улучшения.
Это код, который у меня есть:
export default class Home extends React.Component {
constructor(props) {
super(props)
this.announce = firebase.firestore().collection('announcements');
this.state = {
newAnnouncements: 0,
}
}
componentDidMount() {
let userId;
let countHasRead;
let countAnnounce;
firebase.auth().onAuthStateChanged((user) => {
if (user) {
userId = user.uid
}
});
setTimeout(() => {
this.announce
.get()
.then(snapshot => {
countAnnounce = snapshot.size;
});
this.announce
.where('hasread.userId', '==', userId)
.get()
.then(snapshot => {
countHasRead = snapshot.size;
})
.catch(err => {
console.log('Error getting documents', err);
});
setTimeout(() => {
this.setState({newAnnouncements: countAnnounce - countHasRead});
}, 1000);
}, 500);
}
}
А потом используйте this.state.newAnnouncements
в значке.