axios 重定向问题解决_如何使用React Router V4从axios拦截器重定向?
小编典典
我通过从Component树之外访问Redux
Store并通过注销按钮发送相同的操作来解决了这一问题,因为我的拦截器是在单独的文件中创建的,并且在加载任何Component之前先进行加载。
因此,基本上,我做了以下工作:
在index.js文件中:
//....lots of imports ommited for brevity
import { createStore, applyMiddleware } from 'redux';
import reduxThunk from 'redux-thunk';
import reducers from './reducers';
import { UNAUTH_USER } from './actions/types'; //this is just a constants file for action types.
const createStoreWithMiddleware = applyMiddleware(reduxThunk)(createStore);
const store = createStoreWithMiddleware(reducers);
//Here is the guy where I set up the interceptors!
NetworkService.setupInterceptors(store);
//lots of code ommited again...
//Please pay attention to the "RequireAuth" below, we'll talk about it later
ReactDOM.render(
, document.querySelector('.main-container'));
并在network-service.js文件:
import axios from 'axios';
import { UNAUTH_USER } from '../actions/types';
export default {
setupInterceptors: (store) => {
// Add a response interceptor
axios.interceptors.response.use(function (response) {
return response;
}, function (error) {
//catches if the session ended!
if ( error.response.data.token.KEY == 'ERR_EXPIRED_TOKEN') {
console.log("EXPIRED TOKEN!");
localStorage.clear();
store.dispatch({ type: UNAUTH_USER });
}
return Promise.reject(error);
});
}
};
最后但并非最不重要的一点是,我有一个HOC(高阶组件),它将受保护的组件包装在会话结束时进行实际重定向的位置。这样,当我触发动作类型UNAUTH_USER时,它将我的化简器上的isLogged属性设置session为false,因此该组件会随时得到通知并为我进行重定向。
require-auth.js组件文件:
import React, { Component } from 'react';
import { connect } from 'react-redux';
export default function(ComposedComponent) {
class RequireAuth extends Component {
componentWillMount() {
if(!this.props.session.isLogged) {
this.props.history.push('/login');
}
};
componentWillUpdate(nextProps) {
if(!nextProps.session.isLogged) {
this.props.history.push('/login');
}
};
render() {
return
}
}
function mapStateToProps(state) {
return { session: state.session };
}
return connect(mapStateToProps)(RequireAuth);
}
希望有帮助!
2020-07-22
axios 重定向问题解决_如何使用React Router V4从axios拦截器重定向?相关推荐
- react 动态修改路由_升级到 React Router 4 并实现动态加载和模块热替换
这篇文章是升级到Webpack2坑--模块热替换失效页面不自动刷新?的后续.那篇文章主要说明了,升级到 Webpack 2 之后,通过升级webpack-dev-server和react-hot-lo ...
- hitchhiker部署_《 Hitchhiker的React Router v4指南》:路由配置的隐藏值
hitchhiker部署 Welcome to the Hitchhiker's Guide to React Router v4, Part IV! 欢迎来到< React Router v4 ...
- 关于React Router v4的虚张声势指南
In this article, we'll cover the important things you can quickly learn to be informed and confident ...
- hitchhiker部署_Hitchhiker的React Router v4指南:20分钟内完成Grok React Router
hitchhiker部署 Hi fellow React Hitchhiker! Want a ride into React Router? Jump in. Let's go! 大家好,React ...
- hitchhiker部署_Hitchhiker的React Router v4指南:[比赛,位置,历史] –您最好的朋友!...
hitchhiker部署 嘿! 欢迎来到< React Router v4旅行者指南>,第二部分! (Hey! Welcome to the Hitchhiker's Guide to R ...
- hitchhiker部署_Hitchhiker的React Router v4指南:无限远的递归路径!
hitchhiker部署 Welcome to the third part of the Hitchhiker's Guide to React Router v4. In this article ...
- [React Router v4] Intercept Route Changes
If a user has entered some input, or the current Route is in a "dirty" state and we want t ...
- [React Router v4] Conditionally Render a Route with the Switch Component
We often want to render a Route conditionally within our application. In React Router v4, the Route ...
- 使用React Router v4的嵌套路由
React Router v4 introduced a new declarative, component based approach to routing. With that approac ...
最新文章
- java 反射 工厂_JAVA反射机制、工厂模式与SPRING IOC
- 静态成员变量和非静态成员变量的5个主要区别
- full gc JAVA_java触发full gc的几种情况概述
- 大型网站的 HTTPS 实践(二)——HTTPS 对性能的影响
- jQuery源码解析(5)—— Animation动画
- 方法 手写promise_实现一个符合 Promise/A+规范的 Promise(typescript 版)
- adb工具下载及配置使用
- spotify电脑下载歌曲_我来简单说一下Apple Music和Spotify的下载方法
- uniapp获取手机屏幕高度
- MyGUI_Orge官网教程_5.窗口部件控制
- Excel读写工具类
- 月结5 - 外币评估[FAGL_FC_VAL/FAGL_FCV/OB59/OBA1]
- Linux 系统时间EST改CTS
- 小程序该怎么去做引流和变现呢
- 借win11 WSA升级12l,水一贴升级方法和说说要不要升级win11。
- 【wordpress】文章编辑器插件
- 74ls175四人抢答器电路图_四人抢答器电路设计.doc
- 【2013Esri中国用户大会】GeoEvent打造实时GIS应用
- linux实验mkdir命令,linux基础命令(1)mkdir命令
- 【C/进阶】如何对文件进行读写(含二进制)操作?
热门文章
- 浏览器网站请求全解析
- 使用ICSharpZipLib进行压缩和解压(整理)
- 大数据产品价值主张_十年之后
大数据的价值主张
- 高仿马蜂窝旅游头像泡泡动画
- eclipse oxygen java7,Eclipse Oxygen:M7重点在于可用性
- 无法解析域名“cn.archive.ubuntu.com”。
- Conmi的正确答案——各版本的CH340的区别
- AI正在模仿人类大脑!2021年10篇顶会论文:大脑也在「无监督」学习
- 中小企业如何进行云灾备?
- 大一上學期學習生活情況總結