Я использую Firebase FireStore в реальном времени с React и поместил мой слушатель в 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()
}, [])
Каждый раз, когда я пытаюсь сохранить файл, он добавляет состояние messages
внутри массива useEffect
useEffect(() => {
// code
}, [messages])
Это раздражает, и из-за этого он продолжает перезапускать слушатель и заставляет меня получать дублирующиеся данные, et c.
Я пытался найти, каково это правило ESLint, и, похоже, не могу его найти.