出现这类问题,一般都是在react路由拦截时需要用到
当我们在拦截器中拦截到没有token时,应该是让他回到登录页,
一般想到的是直接使用window.location.href. 但是用location.href直接赋值会导致页面刷新
那如何在非组件内使用history跳转呢?
首先说一下背景,react-router-dom中直接有Router这个包,但是它Router 没有history属性
有如下公式:
Router + HashHistroy = HashRouter
Router + BrowerHistroy = BrowerRouter
但是安装react-router-dom时,默认会安装history包,我们可以通过这个包来自己创建history对象
步骤:
单独引入Router,并自己创建history
1.新建一个 history.js 文件
// 自定义history对象
import { createBrowserHistory } from 'history'
const history = createBrowserHistory()
export default history
2.然后在App.js 使用