React-router-dom如何在封装的axios中实现跳转
这里使用的是createBrowserHistory({forceRefresh:true}强制刷新的做法,除了这个还有其他方法吗,用的是React-routerV4
// history
import { createBrowserHistory } from "history";
export default createBrowserHistory({forceRefresh:true});
import axios from "axios";
import {fakeAuth} from '../util/fakeAuth';
import {message as Message} from 'antd';
import {timeout,baseURL} from "./config.js";
import history from './history';
axios.defaults.timeout = timeout;
axios.defaults.baseURL = baseURL;
axios.interceptors.request.use(
config => {
if (fakeAuth.authenticate()) {
config.headers.Authorization = `Bearer ${sessionStorage.getItem('loginToken')}`;
}
return config;
},
error => {
return Promise.reject(error);
}
);
axios.interceptors.response.use(
response => {
return response;
},
error => {
if (error.response) {
switch (error.response.status) {
case 401:
fakeAuth.signout();
history.push('/login');
break;
default:
}
const message = error.response.data.message ?error.response.data.message :"服务器异常";
Message.error(message);
}
return Promise.reject(error);
}
);
2 回复
可以通过事件吧,在最外面的那个如 App.js 或 Default.js里,监听事件处理函数。 // 大意 event.on(‘funName’,(options)=>{ if(options.code === 401){ // to do } })
然后别的地方,如果出现在问题,通知监听方法。 event.emit(’‘funName’,{code:401});
希望能帮到你。
@xiaotuni 好的,谢谢