欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

react-router-dom,react-router 在非组件内进行路由跳转

程序员文章站 2022-06-06 23:36:29
...

前言:在写项目时需要在非组件的js文件里 进行路由跳转,比如axios里请求响应拦截后做路由跳转, 但是又不能获取到this.props.history, 那怎么才能获取到history对象呢?

1.创建一个  utils/history.js

import { createBrowserHistory } from 'history';

export default  createBrowserHistory();

2.主入口index.js

import ReactDOM from 'react-dom';
import React from "react";
import { Router, Switch } from "react-router-dom";
import { renderRoutes } from '@/router/router-config';
import routes from './routes'
import history from '@/utils/history'          //将配置好的history.js引入

const RouterView =
      <Router history={history}>                    //这里一定要记得配置             
         <Switch>
            {renderRoutes(routes)} //你自己的路由列表
         </Switch>
      </Router> 

ReactDOM.render(RouterView, document.getElementById("root"));

   3.axios.js

import history from '@/utils/history'
import axios from 'axios';

// 创建axios实例
const $http = axios.create();
// response 
$http.interceptors.response.use(response => {
   if(未登录) {                              // 伪代码,响应拦截未登录状态时,就跳转登录
        history.push(`/login`);
   }
})

 

相关标签: react-router react