react-native - 这可以改进吗?
问题描述
好的,我希望我能很好地解释这一点。我正在创建一个可以查看消息的应用程序(带有本机反应)。在主屏幕上,您可以看到带有未读/新消息的徽章。不知何故,这在应用程序第一次加载时不起作用,但是当我导航到另一个屏幕并返回主页时,它会显示徽章(经过短暂的延迟,您将在代码中看到这一点)。
虽然它看起来有效,但我认为还有改进的空间,所以我希望你们中的一个可以看一下代码,看看可以在哪里进行改进。
这是我到目前为止的代码:
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
在徽章中使用。
解决方案
推荐阅读
- c# - WPF 从 xaml 设置转换器的公共图像属性
- spring - Docker:客户端和服务器之间的链接
- c++ - concurrency::parallel_for 每次迭代都不一致
- asp.net-mvc - 在抛出 404 之前有没有办法避免 302 重定向?
- spotfire - 在 Spotfire 中更改列值
- c# - 相关实体未填充
- php - Laravel:5.5 显示 403 Forbidden 并阻止我的项目访问
- spring - 如何使用 Spring JPA Repository 区分计数
- java - 接受来自服务器的java中的xml消息
- java - 具有基本身份验证 java 的 Http 请求