Javascript 使用Axios/Mobx在React.js应用程序中执行无休止的Http 404错误响应循环

Javascript 使用Axios/Mobx在React.js应用程序中执行无休止的Http 404错误响应循环,javascript,reactjs,http,axios,mobx,Javascript,Reactjs,Http,Axios,Mobx,我正在开发一个React.js应用程序,使用Axios进行HTTP处理,使用MobX进行状态管理。我收到了这个错误,我发送了一个测试无效的HTTP响应,这将导致404错误。但我得到的是一个404错误的循环不断重复,下面是控制台的外观: 下面是产生此错误的方法。我创建了一个“调试模式”版本: 首先,该方法在未能从本地数组获取“活动”后命中try块。等待API的“活动”的第一行抛出Http 404错误,发送到控制台中“Errored->error block”登录的catch块 它应该到此结束,但

我正在开发一个React.js应用程序,使用Axios进行HTTP处理,使用MobX进行状态管理。我收到了这个错误,我发送了一个测试无效的HTTP响应,这将导致404错误。但我得到的是一个404错误的循环不断重复,下面是控制台的外观:

下面是产生此错误的方法。我创建了一个“调试模式”版本:

首先,该方法在未能从本地数组获取“活动”后命中try块。等待API的“活动”的第一行抛出Http 404错误,发送到控制台中“Errored->error block”登录的catch块

它应该到此结束,但是在“Errored->error block”日志之后,由于未知的原因,它会打印“Step 1:get activity from local activityRegistry”,这意味着整个方法将从头开始运行。然后它继续重复自己

以下是与API通信的Axios代码,但我找不到任何可能导致此行为的原因:

axios.defaults.baseURL = 'https://localhost:5001/api';

const responseBody = (response: AxiosResponse) => response.data;

const sleep = (ms: number) => (response: AxiosResponse) => 
    new Promise<AxiosResponse>(resolve => setTimeout(() => resolve(response), ms));

const requests = {
    get: (url: string) => axios.get(url).then(responseBody),
}

const Activities = {
    list: ():Promise<IActivity[]> => requests.get('/activities'),
    details: (id: string) => requests.get(`/activities/${id}`),
}
axios.defaults.baseURL='1〕https://localhost:5001/api';
const responseBody=(response:AxiosResponse)=>response.data;
const sleep=(ms:number)=>(响应:AxiosResponse)=>
新承诺(resolve=>setTimeout(()=>resolve(response),ms));
常量请求={
get:(url:string)=>axios.get(url).then(responseBody),
}
常数活动={
列表:():Promise=>requests.get('/activities'),
详细信息:(id:string)=>requests.get(`/activities/${id}`),
}

我不知道为什么会发生这种循环,如果有人能透露一些信息,我将非常感激。我很乐意提供任何其他详细信息。

从哪里调用
loadActivityDos
?您是否有
反应
来调用它,或者您是否使用
useffect

也许你有无休止的
反应
循环,它对你改变的某个标志作出反应


或者,
useffect
最后没有
deps
数组,在每次渲染时都会调用它。

从哪里调用
loadActivityDos
?您是否有
反应
来调用它,或者您是否使用
useffect

也许你有无休止的
反应
循环,它对你改变的某个标志作出反应

或者,
useffect
最后可能没有
deps
数组,并在每次渲染时调用

axios.defaults.baseURL = 'https://localhost:5001/api';

const responseBody = (response: AxiosResponse) => response.data;

const sleep = (ms: number) => (response: AxiosResponse) => 
    new Promise<AxiosResponse>(resolve => setTimeout(() => resolve(response), ms));

const requests = {
    get: (url: string) => axios.get(url).then(responseBody),
}

const Activities = {
    list: ():Promise<IActivity[]> => requests.get('/activities'),
    details: (id: string) => requests.get(`/activities/${id}`),
}