我发现的唯一的工作方法,工作了这一点,而无需使用react-router-redux
路由从action creator async action
完成是通过将history
从组件到行动的创建者和做道具:
history.push('routename');
由于BrowserRouter
忽略传递给它因此,我们不能使用自定义的历史对象与browserhistory历史道具。
什么是工作了这一点最好的方式?
我发现的唯一的工作方法,工作了这一点,而无需使用react-router-redux
路由从action creator async action
完成是通过将history
从组件到行动的创建者和做道具:
history.push('routename');
由于BrowserRouter
忽略传递给它因此,我们不能使用自定义的历史对象与browserhistory历史道具。
什么是工作了这一点最好的方式?
而不是使用的BrowserRouter
你可以使用Router
使用自定义的历史一样
import { Router } from 'react-router'
import createBrowserHistory from 'history/createBrowserHistory'
export const history = createBrowserHistory()
<Router history={history}>
<App/>
</Router>
在这种情况下,你history.push()
会工作。 随着BrowserRouter history.push
不起作用,因为创建新browserHistory
不会起作用,因为<BrowserRouter>
创造自己的历史实例,并侦听的更改。 所以不同的实例,将更改URL,但不更新<BrowserRouter>
一旦你创建一个自定义history
,你可以将其导出,然后在导入action creator
,并用它来导航像动态
import { history } from '/path/to/index';
const someAction = () => {
return dispatch => {
ApiCall().then((res) => {
dispatch({type: 'SOME_CALL', payload: res })
history.push('/home');
})
}
}