You shouldn't need to downgrade to v3, React-Router 4.0.0 is totally capable of accomplishing what the OP asked for.
const history = createBrowserHistory();
is a custom history object so you should use <Router>
to synchronize it with react-router instead of <BrowserRouter>
, which is what I assumed you were using.
Try this instead:
import React, {Component} from 'react';
import { Router } from 'react-router';
import { Route } from 'react-router-dom';
import createHistory from 'history/createBrowserHistory';
const history = createHistory();
class App extends Component {
constructor(props){
super(props);
}
render(){
return (
<Router history={history}> //pass in your custom history object
<Route exact path="/" component={Home} />
<Route path="/other" component={Other} />
<Router />
)
}
}
Once your custom history object is passed in via Router's history prop, history.push should work just as expected in anywhere of your app. (you might want to put your history object in a history config file and import it into places where you want to route programmatically).
For more info, see: React Router history object
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…