Мое приложение для реагирования извлекает api и setInterval в componentDidMount и удаляет его в componentWillUnmount, но каким-то образом, даже когда компонент больше не монтируется (например, когда пользователь выходит из системы и перенаправляется на страницу входа), он все еще периодически выполняет fetch api, как его отлаживать?
(1) получить код API
fetchApi = async pathname => {
const URL = 'API URL'
try {
const { data } = await axios.get(URL, { withCredentials: true });
const { updateTime, results } = data;
const sortedResults = _.sortBy(results, "wo_start").reverse();
// fetching user data from sessionStorage
const user = JSON.parse(sessionStorage.getItem("user"));
if (!user) {
return this.setState({
redirectToLogin: true
});
}
return this.setState({
orders: sortedResults,
renderedOrders: sortedResults,
updateTime: updateTime.time,
pathname,
user
});
} catch (e) {
console.error("Credentials Failed");
return this.setState({
redirectToLogin: true
});
}};
(2) componentDidMount
componentDidMount() {
const { pathname } = this.props.history.location;
this.fetchApi(pathname)
.then(() => {
const intervalId = setInterval(
() => this.fetchApi(pathname),
2 * 60 * 1000
);
this.setState({
intervalId: intervalId
})
})
.catch(e => console.error(e));
}
(3) componentWillUnmount
componentWillUnmount() {
// clearing set interval
clearInterval(this.state.intervalId);
};
(4) вот изображение с консоли Chrome после выхода из системы

да, возможно, componentWillUnmount даже не работает. Попробуйте зарегистрировать или установить точку останова, значение this.state.intervalId тоже



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


setState () является асинхронным.
измените свой код:
(2) componentDidMount
...
...
this.fetchApi(pathname)
.then(() => {
const intervalId = setInterval(
() => this.fetchApi(pathname),
2 * 60 * 1000
);
this.intervalId= intervalId
...
...
(3) componentWillUnmount
componentWillUnmount() {
// clearing set interval
clearInterval(this.intervalId);
};
Я бы начал с
console.infoвокругcomponentWillUnmount, этот блок работает, как ожидалось?