【发布时间】:2021-02-12 02:30:26
【问题描述】:
我正在使用 Firestore 来存储消息。为了优化移动应用程序的性能,我想在 firestore 查询中设置一个限制(50)。 它运行良好并实现了道具中可用的 onLoadEarlier React-native-gifted-chat。
一切正常。
但是,当我在聊天中发送新消息时,向上滚动查看较早的消息后,只有最后 50 条带有新消息的消息,当然,是可用的。
因此,每次我在 Firestore 数据库中添加消息时,都会执行 onSnapshot(在 useeffect 中)并应用限制查询。
有没有办法避免这种情况?
谢谢。
这里是我的 useEffect :
useEffect(() => {
const messagesListener = firestore()
.collection('groups')
.doc(group._id)
.collection('messages')
.orderBy('createdAt', 'desc')
.limit(50)
.onSnapshot(querySnapshot => {
const newMessages = querySnapshot.docs.map(doc => {
const firebaseData = doc.data();
const data = {
_id: doc.id,
text: '',
createdAt: new Date().getTime(),
...firebaseData
};
return data;
});
setMessages(previousMessages => {
return GiftedChat.append(previousMessages, newMessages);
});
});
return () => messagesListener();
}, []);
【问题讨论】:
标签: javascript react-native google-cloud-firestore use-effect react-native-gifted-chat