Instead of using BrowserRouter
you could use the Router
with custom history like
import { Router } from 'react-router'
import createBrowserHistory from 'history/createBrowserHistory'
export const history = createBrowserHistory()
<Router history={history}>
<App/>
</Router>
in which case your history.push()
will work. With BrowserRouter history.push
doesn't work because Creating a new browserHistory
won't work because <BrowserRouter>
creates its own history instance, and listens for changes on that. So a different instance will change the url but not update the <BrowserRouter>
.
Once you create a custom history
, you can export it and then import it in your action creator
and use it to navigate dynamically like
import { history } from '/path/to/index';
const someAction = () => {
return dispatch => {
ApiCall().then((res) => {
dispatch({type: 'SOME_CALL', payload: res })
history.push('/home');
})
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…