react-router4怎么在非组件内进行路由跳转

发布于 2022-09-11 21:02:18 字数 156 浏览 19 评论 0

在axios的请求拦截里需要做路由跳转,不在组件内部
尝试使用
import createHistory from 'history/createBrowserHistory'
createHistory().push('/path')
这个方式,url会变化,页面不会更新

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

过期情话 2022-09-18 21:02:18
  1. 使用connected-react-redux, 将store传入进去,直接

import { push } from 'connected-redux-router'

store.dispatch(push('/path'))
  1. 直接使用使用window.location = '/xxx'跳转
  2. 传入history 在创建Router对象传入的history对象
つ低調成傷 2022-09-18 21:02:18

我也遇到这个问题了,我是这么解决的,在根组件(App.jsx)中将history挂到windows上,这样在任意地方都能通过windows获取history对象,然后就能正常跳转了。

// App.jsx
constructor(props) {
    super(props);
    this.state = {};
    window.reactHistory = this.props.history;
}

// 任意地方使用
window.reactHistory.push("/")

也只是曾经 2022-09-18 21:02:18

将history抽取到全局单例:

// /browserHistory.js
import createHistory from 'history/createBrowserHistory'
export default createHistory()

路由定义:

// /index.js
import {Router} from 'react-router'
import history from './browserHistory'

function App(props) {
  return <Router history={history}>{props.children}</Router>
}

在外部进行路由导航:

// foo.js
import history from './browserHistory'

function goBack() {
  history.goBack()
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文