在 React Router 中传递附加参数

2024-02-26

如何将附加参数传递给我要转换到的组件。

我的routes.js 如下。我声明了两条路径,一条用于authorList,另一条用于特定作者的详细信息。

var routes = (
    <Route path="/" component={require('./components/main')}>        
        <Route path="authors" component={require('./components/authors/authorPage')}/>
        <Route path="authors/:authorId" component={require('./components/authors/AuthorDetails')}/>
    </Route>
);

module.exports = routes;

在我的authorList页面中有如下功能。

showAuthorDetails(authorId) {            

    var myExtraParams = { key1 : val1, key2 : val2};
    hashHistory.push(`/authors/${authorId});     
}

现在在我的 AuthorDetail 页面中,我可以通过执行以下操作来获取authorId

this.props.params.authorId

但我也想将 myExtraParams 作为对象传递,但不想在 url 中声明和传递它。 我想以某种方式访问​​新组件中的 myExtraParams,也许可以这样说

this.props.params.myExtraParams

应该给 mt 对象。 (就像在 Angular UI 路由器中使用 stateParams 发生的方式一样)

我怎样才能做到这一点?


您可以尝试更改路线的结构,如下所示:

var routes = (
    <Route path="/" component={require('./components/main')}>        
        <Route path="authors" component={require('./components/authors/authorPage')}>
            <Route path="author/:authorId" component={require('./components/authors/AuthorDetails')}/>
        </Route>
    </Route>
);

然后在你的authorList页面你可以做

...
renderAuth() {
    if (this.props.children === null) {
        return(
            ....your default authorList
        )
    } else {
        return React.cloneElement(this.props.children || <div />, {myExtraParams: myExtraParams});
    }
}

render() {
    <div>
        {this.renderAuth()}
    </div>
}

showAuthorDetails(authorId) {            
    hashHistory.push(`/authors/author/${authorId});     
}
...

然后,您应该能够在authorsDetail页面中访问this.props.myExtraParams

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

在 React Router 中传递附加参数 的相关文章

随机推荐

  • 如何为单个文件启用 ARC

    我想将使用 ARC 编写的单个 Objective C 类引入旧项目中 互联网提供了许多关于如何为项目启用 ARC 然后为单个文件禁用它的参考 但我想做相反的事情 我想保持项目原样 即使用手动引用计数 然后仅为新文件启用 ARC 我的搜索在
  • 为什么 Gitlab-CI 在下一阶段删除工件?

    指定依赖关系后 Gitlab CI当进入下一阶段时 仍然会从工作目录中删除工件 我已经尝试了该代码的所有不同变体 我认为这些变体应该有效 但没有成功 此外 我已经阅读了几个小时但尚未成功 亚搏体育实验室11 6 0 stages build
  • mef 中的组合容器所持有的类的实例

    据我了解 MEF CompositionContainer 创建并保留类的实例 我不知道在什么情况下 CompositionContainer 的内部会有一个类实例 任何人都可以列出对 CompositionContainer 执行的操作或
  • C++ 相当于代数数据类型?

    假设我有这个 Haskell 代码 data RigidBody RigidBody Vector3 Vector3 Float Shape position velocity mass and shape data Shape Ball
  • WEKA 工具包中的隐马尔可夫模型相当于什么?

    我需要对来自由 8 个加速度计组成的传感器网络的数据流进行分类 每个加速度计都会给我一个 X Y 和 Z 值 因此 在每个样本中 我有 8 x 3 24 个加速度值 我的采样频率约为 30 Hz 执行时间约为 0 5 秒 起初我想为此使用隐
  • 如何使用反射改变属性值

    是否可以使用反射来更改类的属性值 以下是我的课程 public class LoggerManager private static LoggerManager instance new LoggerManager private Logg
  • 使用 awk getline bash 从指定时间范围内的日志文件中提取数据

    我正在搜索解析日志文件并在此链接中找到了我需要的内容从日志文件中提取指定时间范围内的数据 https stackoverflow com questions 7575267 extract data from log file in spe
  • SemanticException 分区规范 {col=null} 包含非分区列

    我正在尝试使用以下代码在配置单元中创建动态分区 SET hive exec dynamic partition true SET hive exec dynamic partition mode nonstrict create exter
  • PHP 数组按值和日期排序(2 列)[重复]

    这个问题在这里已经有答案了 我在 PHP 中有多维数组 就像是 mylist array array ID gt 1 title gt Hello datetime gt 2014 05 05 12 08 PM array ID gt 2
  • 在 travis-ci 上使用秘密 api 密钥

    我想用特拉维斯 ci http travis ci org 对于我的一个projects https github com adelevie parse ruby client 该项目是一个 API 包装器 因此许多测试都依赖于 API 密
  • Fortran 多态性、函数和分配

    我是 Fortran OOP 的初学者 我正在尝试编写一个程序 其中包含处理多态变量作为参数的过程 尽管我的原始代码要复杂得多 许多过程 几个派生类型等 但我可以隔离我的问题的一个简单示例 例如 我有一个复制多态变量并稍微修改此副本的过程
  • 如何配置 Spring MVC 来防止“基于路径的漏洞”

    我有一个 Spring MVC 5 0 8 RELEASE 应用程序 最近的安全扫描表明它具有 基于路径的漏洞 这是控制器 RequestMapping value faq method RequestMethod GET public S
  • 编写一个可调用 C 代码的 void 过程?

    编写一个可从 C 调用的汇编过程 称为increment 该过程应采用指向 32 位整数的指针作为参数 并应递增该参数指向的整数 该函数的 C 原型如下 void increment int p 仅提供从过程标签到 ret 指令的汇编代码
  • Xcode 中的 Swift 编译时间极长

    我有三个 iOS 项目 第一个 35k Swift LOC Swift 2 1 或 2 0 使用 Xcode 7 2 3 编译 第二个 15k Swift LOC Swift 2 3 使用 Xcode 8 2 1 编译 第三个 15k Sw
  • Bootstrap 4 向右浮动无法与导航栏一起使用[重复]

    这个问题在这里已经有答案了 这是代码 我需要将导航栏 没有徽标 移动到右侧 所以我添加了 float right 来喜欢 div class collapse navbar collapse float right 但它没有奏效 完整代码
  • 在 ASP.NET 单元测试中模拟 HttpContext.server.MapPath

    我在 ASP Net Web 应用程序中进行单元测试 现在我可以访问模型文件中的构造函数来测试其中是否有用于上传 XML 文件的 Server MapPath 代码 当尝试测试此代码时 我收到错误 因为 HttpContext 为 null
  • 函数使用 NRV 优化应遵循哪些规则

    我应该遵循哪些规则或技巧才能使函数能够在函数中使用 NRV 命名返回值 优化 我从不同的地方吸收了这些提示 但不知道我的理解是否正确 要返回的对象在函数内部不应该有任何名称 那为什么叫NAMED返回值优化 return 语句应该将对象用括号
  • 在 JDBC 应用程序中向前和向后移动 ResultSet 游标

    我正在开发一个库存系统软件 该软件使用 JDBC ODBC 连接连接到 Ms Sql 服务器 我想将结果集光标移动到下一行并向后移动 连接正常 程序可以从数据库中检索字段 因此没有问题 我这里的代码位于标有 下一步 的按钮上 当您单击此按钮
  • 谷歌表格中的印度短货币格式

    在谷歌表格中 我试图以印度 短 格式显示数字 并带有十万和千万后缀 如下所示 单元格值 1234 显示为1 23K 单元格值 12345 显示为12 35K 单元格值 123456 显示为1 23L L 十万 单元格值 1234567 显示
  • 在 React Router 中传递附加参数

    如何将附加参数传递给我要转换到的组件 我的routes js 如下 我声明了两条路径 一条用于authorList 另一条用于特定作者的详细信息 var routes