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

2024-01-06

我发现无需使用即可解决此问题的唯一工作方法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(使用前将#替换为@)

在带有react-router-v4的动作创建器中使用history.push? 的相关文章

  • React Router Navigate 路径

    我想更好地了解 useNavigate 的工作原理 因为我并不真正理解该模式 这是我的路线
  • React 中多个输入元素的单个处理程序

    我需要从子组件更新我的顶级状态 为此 子组件有多个选择列表 在我的子组件中 constructor props this updateNoOfSets this updateNoOfSets bind this this updateNoO
  • 如何在 CRA (create-react-app) 和 craco 中通过 webpack 设置别名路径?

    我在片场遇到问题webpack别名路径使用创建反应应用程序 and craco https www npmjs com package craco craco 已经谷歌搜索但无法解决问题 我收到一个错误Module not found Ca
  • 如何使用react改变按钮的背景颜色

    我正在使用引导程序进行反应 最初我为按钮提供相同的颜色 现在我想做的是单击按钮更改该按钮的颜色 如果我单击其他按钮 它会更改该按钮和第一个按钮的颜色一回到基本 默认 颜色 我之前已经使用 jquery 完成了此操作 因为传递 onclick
  • 无法读取未定义的属性“mockResolvedValue”

    我在模拟 api 调用时遇到错误 TypeError Cannot read property mockResolvedValue of undefined 并且不明白为什么 我正在利用 jest 来测试我的 api 获取调用函数 这是我要
  • Firestore - 简单的全文搜索解决方案

    我知道 firestore 不支持全文搜索 它为我们提供了使用第三方服务的解决方案 不过我找到了一个简单的解决方案simple 全文搜索 我认为这可能会帮助那些像我一样不想使用第三方服务来完成如此简单任务的人 我正在尝试搜索保存在 fire
  • 使用react-vis在x轴上以(MM-DD)格式显示日期

    我正在尝试在我的项目中实现react vis 我需要根据日期显示数据 我正在使用tickFormat 但它在x轴上显示了两次相同的日期 我在这里添加了几行代码
  • Reactjs - 访问变量

    如何在下面的代码中访问变量 bvar 另外 我什么时候将变量声明为 a state b 在 constructor 和 render 之间 c 在 render 内部 我的理解是 如果变量可以更改 我会在这里设置它们 并且我想在每次组件渲染
  • 如何在 Nextjs 中对 CSS 类名进行哈希处理?

    我怎样才能编辑localIdentName现场css loader在 Nextjs 的 Webpack 配置中 以便我可以散列 隐藏 混淆 css 类名 下面的例子来自 纽约时报 注意类名 此线程上的所有答案都不适用于较新的 Next js
  • 无法使用 Vite 作为 ReactComponent 导入 SVG

    尝试使用这个库 vite 插件 react svg https www npmjs com package vite plugin react svg 并且通过导入它没有成功 import ExternalLink from assets
  • 使用 ReactJS 突出显示文本

    我试图突出显示与查询匹配的文本 但我不知道如何让标签显示为 HTML 而不是文本 var Component React createClass highlightQuery function name query var regex ne
  • 如何覆盖 CSS 模块文件中的全局 CSS?

    让我们说在我的global css我有一个 Next js 项目的文件 flex display flex justify content center align items center height 100 我也有一个Layout j
  • 如何使用 Python 验证 ReCaptcha 响应服务器端?

    我想检查使用生成的客户端响应react google recaptcha在我的注册表单中 不幸的是 我不知道如何使用 Python 在服务器端验证它 I tried recaptcha client https pypi python or
  • REACT NATIVE - 关闭导入模式时更改屏幕状态

    当我关闭模式时 我需要检测它是否已关闭以更改父页面的状态 当我更改状态的任何属性 模态 时无法更改它 ExpertFeedback js import ModalExpertFeedback from ModalExpertFeedback
  • 准备要在 npm 上发布的 React 组件

    我有一个想要在 npm 中发布的组件 我只是通过从项目中的组件文件夹导入它来进行测试 我设法发布它 但现在我得到 node modules 中出现错误 index js 模块 解析失败 意外的标记 11 8 您可能需要一个适当的 加载器来处
  • TS1128:预期声明或声明(文件结尾)

    我正在开发一个 TypeScript React 项目 刚刚习惯它 已经一年没有写过 React 了 等等 并且遇到了一个问题 当我编写此组件时 我遵循了我找到的一些文档 但我在此文件末尾收到 TS1128 预期声明或声明 错误 我无法弄清
  • 在操作调用源自的视图中处理 Redux Saga 结果

    我是 Redux Saga 的新手 来自 Redux Thunk 在某些情况下 我需要从调用操作的视图内部了解 API 调用是失败还是成功 使用 Redux Thunk 我会执行以下操作 我的组件和动作创建者看起来像这样 class MyC
  • 单击

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我知道如何用 jquery 做到这一点 但我被 React 困住了 每当用户点击 div 时 我如何聚焦输入字段 你需要有一个onCl
  • 反应:无效的挂钩调用。钩子只能在函数组件体内调用

    我花了两天时间试图了解错误在哪里 知道吗 App js import React useState useEffect from react import Menu from components Menu function App ret
  • React.js 的状态基于其他状态

    我遇到了 React js 的一些问题 并且在调用 setState 时状态没有立即设置 我不确定是否有更好的方法来解决这个问题 或者这是否真的只是 React 的一个缺点 我有两个状态变量 其中一个基于另一个 原始问题的小提琴 http

随机推荐

  • 通过 Jquery 添加带有 Transform:scale(1) 的类时,Transform 不会产生动画

    我试图在单击按钮时插入一个带有花式变换的新 div scale 动画 但它没有动画 我不知道为什么 有什么建议么 谢谢 button click event gt let div div div div insertAfter button
  • 将圆插入几何数据类型

    既然我们有 2008R2 的开发基线 我即将开始第一次使用几何或地理数据类型 我正在努力寻找如何存储圆的表示 目前我们有圆心的纬度和经度以及半径 类似于 Lat float NOT NULL Long float NOT NULL Radi
  • 如何在 WiX 中创建条件属性? (几乎就像“如果-那么”)

    我有一个安装一些 EXE 文件的 WiX 项目 一个是 主 可执行文件 其他是帮助诊断问题的支持程序 主要可执行文件是可选的 支持程序将自行运行 通常 最终用户会安装第三方程序而不是我的主要可执行文件 在 WiX 安装程序的最后 我希望有一
  • 如何使用maven将Class-Path添加到清单文件中

    使用 maven jar plugin 时我想向 Manifest mf 添加条目所以它将包含 类路径 当我将此条目添加到 Pom 时
  • Android权限:用户按下“允许”后执行任务

    我想知道当用户按下 允许 按钮以访问联系方式 日历访问等时 是否有一种方法可以识别该事件 我知道有一种方法可以通过 ActivityCompat requestPermissions 请求权限 但是有没有一种方法可以在用户授予权限后立即执行
  • 如何从格式化字符串中获取子字符串

    我想得到一个子字符串403162从给定的字符串普拉文 403162 in sql SELECT SUBSTRING column name CHARINDEX column name 1 CHARINDEX column name CHAR
  • 将 Doctrine 2 连接到 Linux 上 SYMFONY 2 的 MSSQL

    我正在尝试使用 Doctrine 2 适用于 Symfony 2 从 Linux 计算机连接到 MSSQLServer 我已经安装了 pdo dblib FreeTDS Sybase DB lib 的 PDO 驱动程序 并且能够通过命令行上
  • 寻找比 GNU 缩进更灵活的工具

    当我使用我想要的源代码中的各种选项运行 indent 时 它会执行我想要的操作 但也会扰乱指针类型中 s 的放置 int send pkt tpkt t pkt void opt data void dump tpkt t bp int s
  • 将文件内容读入二维数组

    我对编程相当陌生 所以外行人的演讲值得赞赏 我的任务是读取一个文件的内容 该文件将包含 9 个值 3x3 数组 然后将内容放入相应的索引中 例如 二维数组的内容是 1 00 2 00 3 00 4 00 1 00 1 00 1 00 2 0
  • 显示附加下拉列表的多选下拉列表

    我正在使用 bootstrap 创建一个多选下拉列表 这是 html
  • python:列出包内的模块

    我有一个包含几个模块的包 每个模块都有一个在其中定义的类 或几个类 我需要获取包内所有模块的列表 python中有这个API吗 这是文件结构 pkg pkg init py pkg module1 py gt defines Class1
  • window.onbeforeunload 仅在关闭窗口时运行,而不是在刷新时运行

    我有这个功能 window onbeforeunload function return Are you sure 我有一个按钮 当用户按下它时 窗口会刷新以更新屏幕值并执行一些数据库调用 我添加了window onbeforeunload
  • PHP 的简单(r)ORM [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • CSS:允许文本区域随内容增长至一定限度

    在某些网站 例如 Github 上 文本区域有一组min height and max height 当用户输入内容时 它们会随着内容而增长 直到达到最大高度 然后出现垂直滚动条 这种效果是如何实现的呢 我的文本区域不会随着其内容而增长 即
  • 如何加速C++中的矩阵乘法?

    我正在用这个简单的算法执行矩阵乘法 为了更加灵活 我使用包含动态创建数组的矩阵对象 将此解决方案与我的第一个静态数组解决方案进行比较 速度慢了 4 倍 我可以做什么来加快数据访问速度 我不想改变算法 matrix mult std matr
  • 使用 Postman 通过原始 JSON 发送 POST 数据

    我有 Postman 在 Chrome 中无法打开的那个 我正在尝试使用原始 JSON 执行 POST 请求 在 正文 选项卡中 我选择了 原始 和 JSON 应用程序 json foo bar 对于标题我有 1 Content Type
  • 无法让 Log4Net 在我们的 WCF 应用程序中工作 [重复]

    这个问题在这里已经有答案了 我们正在尝试使用 Log4Net 从 IIS 6 部署的 WCF 应用程序进行日志记录 我们正在尝试记录到文件 但似乎无法创建日志文件 更不用说查看其中的日志输出了 web config 的相关部分是
  • 有没有办法确定显示器的物理尺寸?

    以英寸为单位 例如21 监视器 该应用程序是一个标准的 WinForms 应用程序 编辑 看来确实没有可靠的方法来完成我的需要 这是无法保证的 Windows 无法知道显示器的大小 除非其驱动程序询问它并向 Windows 报告答复 但是
  • 在vim中,如何将部分行写入文件?

    我想使用 vim 将文件的一部分写入另一个文件 例如 我有以下文件 This is line 1 and this is the next line 我希望我的输出文件读取 line 1 and this is 我知道如何使用 vi 将一系
  • 在带有react-router-v4的动作创建器中使用history.push?

    我发现无需使用即可解决此问题的唯一工作方法react router redux路线从action creator async action完成是通过通过history从组件到动作创建者的道具并执行以下操作 history push rout