在ComponentDidMount()的App.js中,我的axios响应上具有以下拦截器,并且它不适用于所有axios请求。
axios.interceptors.response.use(function (response) {
if (response)
return response;
}, function (error) {
if (error.response && 401 == error.response.status) {
console.log('401')
return Promise.reject(error);
}
else {
return Promise.reject(error);
}
});
当我调用API并收到401错误时,此代码对我不起作用。 我在其他组件中使用了此代码,但无法处理401错误
axios
.get("/web-api/home/", { headers: headers })
.then(response => {
this.setState({
homeconfig: response.data
});
})
.catch((response) => {
console.log(response);
});
答案 0 :(得分:1)
您已将axios拦截器集放置在ComponentDidMount中。在此配置之前,子组件可能正在调用请求。 (尤其是如果您正在子组件的构造函数中调用请求)。因此,您应该在安装任何组件之前进行此配置。将您的配置放入componentWillMount或构造函数中(我更喜欢构造函数,因为在新版本的react-17中将不推荐使用componentWillMount)。