在axios的请求拦截里需要做路由跳转,不在组件内部
尝试使用
import createHistory from 'history/createBrowserHistory'
createHistory().push('/path')
这个方式,url会变化,页面不会更新
在axios的请求拦截里需要做路由跳转,不在组件内部
尝试使用
import createHistory from 'history/createBrowserHistory'
createHistory().push('/path')
这个方式,url会变化,页面不会更新
我也遇到这个问题了,我是这么解决的,在根组件(App.jsx)中将history挂到windows上,这样在任意地方都能通过windows获取history对象,然后就能正常跳转了。
// App.jsx
constructor(props) {
super(props);
this.state = {};
window.reactHistory = this.props.history;
}
// 任意地方使用
window.reactHistory.push("/")
将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()
}
4 回答1.6k 阅读
2 回答1k 阅读✓ 已解决
2 回答2.6k 阅读
1 回答920 阅读✓ 已解决
1 回答654 阅读✓ 已解决
2 回答806 阅读✓ 已解决
2 回答960 阅读