reactjs - 在带有react-router-v4的 Action 创建器中使用history.push?

标签 reactjs redux react-router react-redux react-router-v4

我发现在不使用 react-router-reduxaction 创建者异步操作 完成路由的情况下解决此问题的唯一工作方法是传递 历史从组件到 Action 创建者的 Prop 并执行:

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()将工作。使用浏览器路由器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');
        })
    }
}

关于reactjs - 在带有react-router-v4的 Action 创建器中使用history.push?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48514773/

相关文章:

node.js - 对某些案例问题的警告 computedMatch 使用react?

react-native - 远程 redux devtools 停止工作

javascript - 使用 Webpack 4 构建 React 组件库

javascript - 即使某些图像存在,也不会在 react 应用程序中加载

reactjs - 将 tailwindcss 与 React 一起使用,清除后大小没有减小

reactjs - 如何对连接到 React Date Picker 的 React/Redux 表单字段进行 onFocus 和 onBlur?

javascript - 如何在我自己的高阶组件 (HOC) 中使用 React Router 的 withRouter HOC?

reactjs - 单击链接时,activeClassName 在侧边菜单上不起作用

javascript - react 路由: URL is changing but page is not loading

javascript - react 中的模糊并没有关闭我的导航菜单