Javascript 如何禁用ESLint将项目添加到useffect';谁是观察者?

Javascript 如何禁用ESLint将项目添加到useffect';谁是观察者?,javascript,reactjs,react-hooks,eslint,tslint,Javascript,Reactjs,React Hooks,Eslint,Tslint,我将firebase firestore实时与React一起使用,并将我的侦听器放置在useffect中 这是密码 useEffect(() => { const unsub = db.collection('messages') .onSnapshot((querySnapshot) => { querySnapshot.forEach((doc) => { // Check if it's existing in me

我将firebase firestore实时与React一起使用,并将我的侦听器放置在
useffect

这是密码

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数组中添加
消息
状态

useEffect(() => {
    // code
}, [messages])
它越来越烦人,由于这种行为,它不断重新启动侦听器,导致我获取重复数据,等等


我已尝试搜索此项的ESLint规则,但似乎找不到。

消息的问题。我认为这是useSate的一个变量。Linter建议将消息添加到依赖项数组中。下面的MB代码可以帮助您

import React,{useffect,useState}形式为“React”;
常量组件=()=>{
const[messages,setMessages]=useState([]);
useffect(()=>{
const unsub=db.collection('消息')
.onSnapshot((querySnapshot)=>{
querySnapshot.forEach((doc)=>{
setMessages((prevMessages)=>{
const index=prevMessages.findIndex(({id})=>id==doc.id);
如果(索引!=-1){
返回消息;
}
返回([
{id:doc.id,…doc.data()},
…发布消息,
]);
});
});
});
遣返不明嫌犯;
}, []);
返回null;

};?那么你将如何取消听众的订阅?我忘了。使用不明嫌犯