Json服务器GET请求持续触发
我已经在我的机器上本地设置了一个json服务器,用作我正在创建的应用程序的模拟API。我在端口3004上运行服务器,而我的应用程序在端口3000上运行。应用程序按预期运行;然而,在检查服务器运行的终端时,我注意到GET请求每毫秒都在不断地被调用—请参见下图: 这是正常的行为吗?根据下面的代码,我希望只调用一次GET请求。GET请求是React应用程序的一部分,在useEffect内部调用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
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(()=>{},[])。空数组表示-装载时仅执行一次。