Json服务器GET请求持续触发

Json服务器GET请求持续触发,json,reactjs,api,json-server,Json,Reactjs,Api,Json Server,我已经在我的机器上本地设置了一个json服务器,用作我正在创建的应用程序的模拟API。我在端口3004上运行服务器,而我的应用程序在端口3000上运行。应用程序按预期运行;然而,在检查服务器运行的终端时,我注意到GET请求每毫秒都在不断地被调用—请参见下图: 这是正常的行为吗?根据下面的代码,我希望只调用一次GET请求。GET请求是React应用程序的一部分,在useEffect内部调用 useEffect(() => { fetch('http://localhost:3004

我已经在我的机器上本地设置了一个json服务器,用作我正在创建的应用程序的模拟API。我在端口3004上运行服务器,而我的应用程序在端口3000上运行。应用程序按预期运行;然而,在检查服务器运行的终端时,我注意到GET请求每毫秒都在不断地被调用—请参见下图:

这是正常的行为吗?根据下面的代码,我希望只调用一次GET请求。GET请求是React应用程序的一部分,在useEffect内部调用

useEffect(() => {
    fetch('http://localhost:3004/invoices',
        {
            headers : { 
                'Content-Type': 'application/json',
                'Accept': 'application/json'
        },
    }
    )
    .then(function(response){
        return response.json();
    })
    .then(function(myJson){
        setData(myJson);
    })
    .catch((error) => {
        console.error("Error:", error);
      });
  });

您需要将依赖项添加到
useffect
,例如,如果您希望仅在第一次渲染时触发该依赖项,则可以按如下方式编写

useEffect(() => {
fetch('http://localhost:3004/invoices',
    {
        headers : { 
            'Content-Type': 'application/json',
            'Accept': 'application/json'
    },
}
)
.then(function(response){
    return response.json();
})
.then(function(myJson){
    setData(myJson);
})
.catch((error) => {
    console.error("Error:", error);
  });
},[]);
更可能的情况是,当某些内容发生变化时,您希望效果触发,在这种情况下,将依赖关系添加到方括号中,如下所示

useEffect(() => {
fetch('http://localhost:3004/invoices',
    {
        headers : { 
            'Content-Type': 'application/json',
            'Accept': 'application/json'
    },
}
)
.then(function(response){
    return response.json();
})
.then(function(myJson){
    setData(myJson);
})
.catch((error) => {
    console.error("Error:", error);
  });
},[someState]);

您应该向useEffect添加依赖项数组。像这样传递空数组:useffect(()=>{},[])。空数组表示-装载时仅执行一次。