Можно ли это улучшить? - PullRequest
0 голосов
/ 04 июля 2018

Хорошо, я надеюсь, что смогу объяснить это хорошим способом. Я создаю приложение (с реагировать на родной), где сообщения могут быть просмотрены. На главном экране вы можете увидеть значок с непрочитанными / новыми сообщениями. Почему-то это не работает при первой загрузке приложения, но когда я перехожу на другой экран и возвращаюсь домой, он показывает значок (после небольшой задержки вы увидите это в коде).

Хотя это, кажется, работает, я думаю, что есть возможности для улучшения, поэтому я надеюсь, что один из вас может взглянуть на код и посмотреть, где можно сделать улучшения.

Это код, который у меня есть:

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 в значке.

...