如何在react-router v4中使用history.push/Link/Redirect传递参数?

2023-12-11

我们如何传递参数this.props.history.push('/page')在 React-Router v4 中?

.then(response => {
       var r = this;
        if (response.status >= 200 && response.status < 300) {
             r.props.history.push('/template');
          });

首先,你不需要做var r = this;正如这在if statement指的是回调本身的上下文,因为您使用的是箭头函数,所以它指的是 React 组件上下文。

根据文档:

历史对象通常具有以下属性和方法:

  • length - (数字)历史堆栈中的条目数
  • action - (字符串)当前操作(PUSH、REPLACE 或 POP)
  • 位置 - (对象)当前位置。可能具有以下属性:

    • pathname - (字符串)URL 的路径
    • search - (string) URL 查询字符串
    • hash - (字符串)URL 哈希片段
    • state - (字符串)提供给例如的特定于位置的状态Push(path, state) 当这个位置被推送到 堆。仅在浏览器和内存历史记录中可用。
  • Push(path, [state]) - (function) 将新条目推送到历史堆栈上
  • Replace(path, [state]) - (function) 替换历史堆栈上的当前条目
  • go(n) - (函数)将历史堆栈中的指针移动 n 个条目
  • goBack() - (函数)相当于 go(-1)
  • goForward() - (函数)相当于 go(1)
  • block(prompt) - (功能) 阻止导航

因此,在导航时,您可以将道具传递给历史对象,例如

this.props.history.push({
  pathname: '/template',
  search: '?query=abc',
  state: { detail: response.data }
})

或类似地对于Link组件或Redirect成分

<Link to={{
      pathname: '/template',
      search: '?query=abc',
      state: { detail: response.data }
    }}> My Link </Link>

然后在渲染的组件中/template路线,您可以访问传递的道具,例如

this.props.location.state.detail

另请记住,当使用 props 中的历史或位置对象时,您需要将组件连接到withRouter.

根据文档:

带路由器

您可以访问历史对象的属性和最接近的<Route>'s匹配通过withRouter高阶分量。withRouter每次路线改变时都会重新渲染其组件 相同的道具<Route> render props: { match, location, history }.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在react-router v4中使用history.push/Link/Redirect传递参数? 的相关文章

随机推荐

  • 如何中止映射器(或减速器)内的 MR 作业

    我尝试在map方法中抛出IOExceptions 但MR作业没有停止 抛出大量 IOException 后作业将停止 有没有什么方法可以通过抛出异常或一些简单的调用来停止整个工作 谢谢 这不是 Hadoop 的理想用例 也不是一个好的实践
  • libusb-win32:自动安装驱动程序过滤器

    我在使用基于 libusb w32 的程序来检测设备时遇到了问题 该程序必须检测数码相机 我需要自动安装驱动程序过滤器 以便检测到任何新相机 而无需任何手动操作 我使用过 install filter i class 6BDD1FC6 81
  • 使用十进制数字生成可变颜色

    我创建了一个文件 其中第一列是十进制颜色线 第二列是 y 轴 x 轴是行号 0 0 1 1 2 2 然后我运行这个命令 plot test dat u 0 2 1 pt 7 ps 1 lc rgb variable 正如您在图片中看到的 输
  • 一个java文件如何调用另一个java文件的方法? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 如何在java中调用不同类 文件 的方法 是否需要对象 或者有第三种方法来合并java文档吗 我们可以使用简单的方法调用吗 有没有正确的方法来调用新方法 我不清楚你的问题 据我了解你想
  • 将 Vue 3 组件渲染为 HTML 字符串

    我正在开发一个 vue js 项目 版本 3 我遇到了一种情况 我想将组件的渲染 HTML 视图用于当前组件的方法 我在 Vue 项目中创建了以下 SVG 组件 CircleWithTextSvg vue
  • 在 Haskell 中使用“foldr”实现“member”函数

    我这样尝试过 member e False member e xs foldr e xs 进而 member 3 1 2 3 4 5 我收到此错误消息 No instance for Num Bool arising from the li
  • 在 Windows 窗体应用程序中永远循环

    我正在使用 Visual C 并且我正在使用 Windows 窗体而不是控制台应用程序 因此我不是在 Main 中工作 而是在表单文件中工作 我对 C 也很陌生 如果我的一些问题很愚蠢 我很抱歉 我基本上需要做的是 当我的程序启动时 我需要
  • 当使用子目录为每个目标构建依赖项时,CMake 无法找到外部库

    我有一组库及其各自的测试 它们按以下方式组织 Lib1 Lib1 Test Lib2 Lib2 Test Lib3 Lib3 Test 等等 其中一些库依赖于其他库 例如Lib1依赖于取决于Lib2 而 Lib3 依赖于 Lib1 我可以轻
  • SQLite3 查询 ORDER BY 参数带有 ?符号

    我正在尝试在 python 中使用 sqlite3 进行查询 通过参数列 overall risk 或 latest risk 这是双数 进行排序 param overall risk cur db execute SELECT FROM
  • 在 Python Tkinter 中绑定 Ctrl (-)

    我有一个带有文本小部件的应用程序 我希望当用户按下 Control 键和减号键 时我的字体变小 the code self bind all
  • Cloudfoundry 上的非 http TCP 连接

    我是一名菜鸟移动开发人员 试图利用 cloudfoundry 的服务来运行我的服务器来处理一些聊天和角色移动 我正在使用 Noobhub 来实现此目的 使用 Node js 和 Corona SDK 的 TCP 连接 API 在服务器和客户
  • 仅返回对象中包含特定值的数组元素

    我在弹性搜索索引中有以下文档 type foo components id 1234123 data collections date time 2020 03 02T08 14 48 00 00 group 1 group descrip
  • 如何动态加载 strings.xml?我可以将文件放在服务器上吗?

    我为什么问这个是因为我的 APK 很大 我想让它变小 strings xml 中有很多字符串 我们的产品经理迫使我们支持地球上的所有语言 我想知道 我是否可以将 strings xml 的一些语言放在本地 将其他语言放在服务器中 然后当用户
  • 自动启动 Metro 应用程序

    我想编写一个 Windows 8 Metro 应用程序 该应用程序在用户登录后自动启动 对于桌面应用程序 我知道如何做到这一点 使用注册表项或将链接复制到启动文件夹 在这种情况下 我正在寻找与最后一种方法等效的 Metro 因为我希望用户可
  • 流星失败,无法从 npm-shrinkwrap 安装 npm-packages

    我已经诊断这个问题几天了 并测试了与此类似的 meteor 和 npm 依赖项出现的首要问题解决方案 我和我的后端工程师都被难住了 我使用的是 OSX 10 10 3 ruby 1 9 3 node v0 10 36 npm 1 4 28
  • Magento - 查询产品选项

    我想编写一个控制器来查找给定产品的不同选项 例如大 中 小 红色 蓝色等 谁能告诉我我要写入控制器的代码 额外细节 我越来越接近了 但我仍然无法弄清楚 这是我在控制器中编写的代码 db Mage getModel catalog produ
  • Oracle where 子句中的日期比较

    例如 我有一个学生表 其中包含 DOJ 加入日期 列 其类型设置为 DATE 现在我已以 dd mon yy 格式存储记录 我在运行时有一个 IN 参数 其中日期作为字符串传递 其格式为 dd mm yyyy 如何比较并获取日期结果 我想获
  • .net 控制台应用程序生命周期 - 解决 BuildManager.GetReferencedAssemblies 的预启动初始化错误

    我正在尝试迭代控制台应用程序中引用的程序集 我一直在其他项目中使用 BuildManager GetReferencedAssemblies 执行此操作 但在我的控制台应用程序中 我收到 InvalidOperationException
  • 使用 Jersey 的 REST with Java (JAX-RS) 欢迎页面

    我正在使用 Jersey 实现 Restful Web 服务 我想将index jsp 显示为欢迎页面
  • 如何在react-router v4中使用history.push/Link/Redirect传递参数?

    我们如何传递参数this props history push page 在 React Router v4 中 then response gt var r this if response status gt 200 response