【发布时间】:2022-11-08 12:36:11
【问题描述】:
我尝试加载一个页面并立即返回到上一页。我希望它中止,但是当我检查网络选项卡时,api 调用仍然成功并成功获取数据。这是我的代码:
useEffect(() => {
const controller = new AbortController();
const getPost = async () => {
try{
setIsLoading(true)
const response = await axios.get(`${BASE_URL}/posts/${path}`, {signal:
controller.signal})
setUsername(response.data.username)
setIsLoading(false)
}catch(err){
if(err.response.data == 'ERR_ABORTED 400'){
return console.log('request canceled')
}
setIsLoading(false)
if(err.response.data === 'no post found'){
return setgeneralFetchError(true)
}
}
return ()=>{
controller.abort()
}
};
getPost()
}, [path]);
这是我第一次尝试这样做。可能我做得不好。
【问题讨论】:
-
您是否确认正在调用返回的函数?在调用
controller.abort()之前,我会在该方法中添加一些控制台日志记录 -
它没有被调用。这就是问题所在。没有调用返回函数,我不知道为什么。
-
您需要在
getPost()之后而不是在 getPost 函数中包含您的 return 语句 -
已经这样做了,不工作
标签: node.js reactjs react-hooks axios