【发布时间】:2023-02-08 21:25:29
【问题描述】:
我在 axios 拦截器中使用调度事件,所以每当我从 api 收到 400 错误时,我都会将事件调度到 UI 以通知消息和重定向。 请参考
export const loggerInterceptor = (AXIOS ) => {
const { request, response } = AXIOS.interceptors;
const token = getCookie(COOKIE_JWT_TOKEN);
request.use((config) => {
config.performance = calculateTimes();
config.timestamp = Date.now();
return config;
});
response.use(
(response) => {
if (
response
) {
flightInfo = {
...flightInfo,
...response.data,
};
}
return Promise.resolve(response);
},
(error) => {
if(error.response.status===400)
{
addErrorToast();
window.location.href= window.location.origin +'/app';
}
return Promise.reject(error);
}
);
};
当我收到 400 错误但未发生调度时,下面的 addErrorToast 正确触发。解决此问题的任何解决方案或建议
const addErrorToast = ()=>{
const dispatch = useDispatch();
dispatch(
addToast({
type: "success",
msg: (
<FormattedMessage
id="notifications.connected"
defaultMessage="You are connected!"
/>
),
hasCloseIcon: false,
})
);
}
【问题讨论】:
标签: reactjs axios react-redux interceptor