当 token 失效后,重定向到登录页面
为了能够在非组件环境下拿到路由信息,进行路由跳转等操作,需要使用路由中提供的 Router 组件,并自定义 history 对象
// utils/history.js
import { createBrowserHistory } from 'history'
const customHistory = createBrowserHistory()
export { customHistory }
// App.js
import { Router } from 'react-router-dom'
import { customHistory } from '@/utils'
const App = () => {
return (
<Router history={customHistory}>
// ...
</Router>
)
}
在非组件环境下通过 customHistory 进行路由跳转等操作
customHistory.push('/login')
// 需要安装固定版本 yarn add history@4.10.1
在组件里,通过 useSelector 获取 state 数据;而在非组件的JS中,通过 store.getState 来获取
获取当前的路由信息(只在组件中)
组件的 props 里有路由信息(history,location,match),如果没有通过 withRouter 注入获取
组件里面通过钩子获取 (useHistory / useLocation / useMatch)