我发现无需使用即可解决此问题的唯一工作方法react-router-redux
路线从action creator async action
完成是通过通过history
从组件到动作创建者的道具并执行以下操作:
history.push('routename');
Since 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()
将工作。使用浏览器路由器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');
})
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)