当前位置: 首页 > 知识库问答 >
问题:

如何通过道具反应路由器4组件?

居乐池
2023-03-14

我想将我的应用程序入口点用作全局状态存储。将信息作为道具传递给孩子们。

使用react-router 4,如何将prop数据发送到渲染的组件。以类似的方式:

<Route Path=“/someplace” component={someComponent} extra-prop-data={dataPassedToSomeComponent} />

我见过一些旧版本react router的简陋变通方法,这些方法似乎已被弃用。

在v4中这样做的正确方法是什么?

共有3个答案

越欣怡
2023-03-14

从技术上讲,有两种方法可以做到这一点。

第一个(不是最有效的)是将内联函数传递给组件prop:

<Route 
  path=“/someplace” 
  component={(props) => (
    <SomeComponent {...props} extra-prop-data={ dataPassedToSomeComponent } />
  ) />

第二个是最好的解决方案。为了防止像第一个示例一样在每个渲染上创建新组件,我们传递相同的内联函数,但这次传递给渲染属性:

<Route 
  path=“/someplace” 
  render={(props) => (
    <SomeComponent {...props} extra-prop-data={ dataPassedToSomeComponent } />
  ) />
卫增
2023-03-14

要添加到上述答案中,如果希望组件可以访问路由属性,则需要包括这些属性。现在,当路由器激活“SomeComponent”时,该组件将获得所有路由道具以及额外的参数——在本例中为“param”。

<Route path='/someplace' component={(props) => <SomeComponent param="yo" {...props}/>} />
赫连越
2023-03-14

您可以将函数传递给呈现道具,而不是将组件直接传递给组件道具。

<Route path="/someplace" render={() => <SomeComponent props={} />} />

你可以在这里读更多。

 类似资料:
  • 我需要通过使用路由器的组件道具。这是我的代码: 如您所见,我验证了我要传递给登录组件的道具。 当我记录道具时,未经验证的道具不存在。我做错了什么?我怎样才能正确地通过道具?我跟踪了文档和其他讨论。据我所知,这应该是可行的。react router和react router dom的版本为4.0.0

  • 我是React Router的新手,我正试图通过一条路径将一些道具从我的父组件传递给子组件。 这是我的代码: 理想情况下,我希望能够从子组件触发。在做了一些研究后,我认为传递一个选项而不是会传递它,但是它不会。知道如何将函数传递到路由组件中吗?

  • 当用户单击单击区域时,我试图传递所选帐户的ID。 然而,在我的帐户组件中,这将使我们: 我越来越不确定了。 有没有办法使用链接将道具传递到我的组件?

  • 当我在浏览器上运行我的应用程序时,我的控制台中出现以下错误。 警告:失败的propType:为“Route”提供的prop“component”无效。 我目前正在使用以下开发需求的版本 这就是我的路由文件的外观。 这就是我的主js的样子 请问这个错误是从哪里来的?我该如何解决这个问题?

  • 有件事让我发疯,我需要你的帮助。基本上,当用户单击“我的配置文件”时,我想重定向到用户的配置文件。为此,我使用以下代码段 这应该行得通。但是,尽管当单击我的个人资料时,网址会更改为正确的网址,但页面不会显示。它只是保持旧页面。 谷歌了一会儿,我知道这和redux有关...但是,我找不到解决方案。(this.props.userid来自Layout组件,而Layout组件又从redux商店获取) 这

  • 我试图使用react router将props从app.jsx传递到某个路由组件,但出现以下错误