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`);
}
})
上一篇: NavMenu导航菜单中使用vue-router模式时的注意事项
下一篇: 六味地黄丸