小编典典

我通过从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拦截器重定向?相关推荐

  1. react 动态修改路由_升级到 React Router 4 并实现动态加载和模块热替换

    这篇文章是升级到Webpack2坑--模块热替换失效页面不自动刷新?的后续.那篇文章主要说明了,升级到 Webpack 2 之后,通过升级webpack-dev-server和react-hot-lo ...

  2. hitchhiker部署_《 Hitchhiker的React Router v4指南》:路由配置的隐藏值

    hitchhiker部署 Welcome to the Hitchhiker's Guide to React Router v4, Part IV! 欢迎来到< React Router v4 ...

  3. 关于React Router v4的虚张声势指南

    In this article, we'll cover the important things you can quickly learn to be informed and confident ...

  4. 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 ...

  5. hitchhiker部署_Hitchhiker的React Router v4指南:[比赛,位置,历史] –您最好的朋友!...

    hitchhiker部署 嘿! 欢迎来到< React Router v4旅行者指南>,第二部分! (Hey! Welcome to the Hitchhiker's Guide to R ...

  6. hitchhiker部署_Hitchhiker的React Router v4指南:无限远的递归路径!

    hitchhiker部署 Welcome to the third part of the Hitchhiker's Guide to React Router v4. In this article ...

  7. [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 ...

  8. [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 ...

  9. 使用React Router v4的嵌套路由

    React Router v4 introduced a new declarative, component based approach to routing. With that approac ...

最新文章

  1. java 反射 工厂_JAVA反射机制、工厂模式与SPRING IOC
  2. 静态成员变量和非静态成员变量的5个主要区别
  3. full gc JAVA_java触发full gc的几种情况概述
  4. 大型网站的 HTTPS 实践(二)——HTTPS 对性能的影响
  5. jQuery源码解析(5)—— Animation动画
  6. 方法 手写promise_实现一个符合 Promise/A+规范的 Promise(typescript 版)
  7. adb工具下载及配置使用
  8. spotify电脑下载歌曲_我来简单说一下Apple Music和Spotify的下载方法
  9. uniapp获取手机屏幕高度
  10. MyGUI_Orge官网教程_5.窗口部件控制
  11. Excel读写工具类
  12. 月结5 - 外币评估[FAGL_FC_VAL/FAGL_FCV/OB59/OBA1]
  13. Linux 系统时间EST改CTS
  14. 小程序该怎么去做引流和变现呢
  15. 借win11 WSA升级12l,水一贴升级方法和说说要不要升级win11。
  16. 【wordpress】文章编辑器插件
  17. 74ls175四人抢答器电路图_四人抢答器电路设计.doc
  18. 【2013Esri中国用户大会】GeoEvent打造实时GIS应用
  19. linux实验mkdir命令,linux基础命令(1)mkdir命令
  20. 【C/进阶】如何对文件进行读写(含二进制)操作?

热门文章

  1. 浏览器网站请求全解析
  2. 使用ICSharpZipLib进行压缩和解压(整理)
  3. 大数据产品价值主张_十年之后 大数据的价值主张
  4. 高仿马蜂窝旅游头像泡泡动画
  5. eclipse oxygen java7,Eclipse Oxygen:M7重点在于可用性
  6. 无法解析域名“cn.archive.ubuntu.com”。
  7. Conmi的正确答案——各版本的CH340的区别
  8. AI正在模仿人类大脑!2021年10篇顶会论文:大脑也在「无监督」学习
  9. 中小企业如何进行云灾备?
  10. 大一上學期學習生活情況總結