gpt4 book ai didi

reactjs - 如何在 axios 拦截器内编写重定向而无需在 React JS 中重新加载

转载 作者:行者123 更新时间:2023-12-03 13:38:08 25 4
gpt4 key购买 nike

我使用axios拦截器来维护内部服务器错误。如果响应有错误而不重新加载,我需要重定向到另一个网址。下面的代码我使用了location.href。所以正在重新加载。我需要一个无需刷新页面即可重定向的解决方案。

我在react-router-dom中尝试了“重定向”。但它对我不起作用。

export function getAxiosInstance() {
const instance = axios.create();
const token = getJwtToken();

// Set the request authentication header
instance.defaults.headers.common['Authorization'] = `Bearer ${token}`;

// Set intercepters for response
instance.interceptors.response.use(
(response) => response,
(error) => {
if (config.statusCode.errorCodes.includes(error.response.status)) {
return window.location.href = '/internal-server-error';
}

return window.location.href = '/login';
}
);

return instance;
}

谁能帮我解决这个问题吗?

最佳答案

这将利用导入缓存:

// history.js
import { createBrowserHistory } from 'history'

export default createBrowserHistory({
/* pass a configuration object here if needed */
})


// index.js (example)
import { Router } from 'react-router-dom'
import history from './history'
import App from './App'

ReactDOM.render((
<Router history={history}>
<App />
</Router>
), holder)


// interceptor.js
import axios from 'axios';
import cookie from 'cookie-machine';
import history from '../history';

axios.interceptors.response.use(null, function(err) {
if ( err.status === 401 ) {
cookie.remove('my-token-key');
history.push('/login');
}

return Promise.reject(err);
});

关于reactjs - 如何在 axios 拦截器内编写重定向而无需在 React JS 中重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56952642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com