我正在使用React实时使用Firebase Firestore,并将侦听器放置在useEffect
中。
这里是代码
useEffect(() => {
const unsub = db.collection('messages')
.onSnapshot((querySnapshot) => {
querySnapshot.forEach((doc) => {
// Check if it's existing in messages
const index = messages.findIndex(i => i.id === doc.id)
if (index === -1) {
const newMessage = {
id: doc.id,
...doc.data()
}
setMessages([newMessage, ...messages])
}
});
});
return () => unsub()
}, [])
每次尝试保存文件时,它都会在useEffect数组内添加messages
状态
useEffect(() => {
// code
}, [messages])
变得很烦人,并且由于这种行为,它会继续重新启动侦听器并导致我获取重复的数据,等等。
我已经尝试搜索此的ESLint规则,并且似乎找不到它。
[C0的问题。我认为这是useSate的变量。 Linter建议将消息添加到依赖项数组。下面的MB代码可以提供帮助。
messages