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

将道具传递到react router v4中的路由器组件[重复]

姬承教
2023-03-14

例如:

import SomeComponent...

<Router>
    <Route path='/' component={SomeComponent} />
</Router>

我如何传递一些东西到某些组件,以便我可以通过this.props.xxx在组件中访问它?

共有1个答案

况野
2023-03-14

试试这个:

<Router>
    <Route path='/' component={(props) => 
        (<SomeComponent value={this.state.value} {...props} )/>} />
</Router>

注意,如果您想访问组件中的路由属性(如匹配、位置或历史,如组件代码中的this.props.history),您需要传递... props

更新:

出于性能原因,在这种情况下使用渲染可能更好,比如:

 <Router>
        <Route path='/' render={(props) => 
            (<SomeComponent value={this.state.value} {...props} )/>} />
    </Router>

根据react文件

使用组件(而不是渲染或子组件)时,路由器使用React.createElement从给定组件创建新的React元素。这意味着,如果为component属性提供内联函数,则每次渲染时都会创建一个新组件。这将导致现有组件卸载和新组件安装,而不仅仅是更新现有组件。使用内联函数进行内联渲染时,请使用“渲染”或“子对象”属性(如下)。

 类似资料:
  • 我有一个模态,我想在其中放置一个动态嵌套视图。我认为这样做的一个好方法是像这样使用 我想把一些道具传给这些组件,就像我平时在React中一样 最终,我将移动到存储/获取状态中的这些属性,但是考虑到当前的实现,在定义开关

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

  • 我使用的反应与反应路由器的项目,我需要传递道具的子组件从路由。 我有这样的设置: App.js Home.js 问题是主组件总是给出错误“未定义”。我无法理解如何解决这个问题。如果我从Home.js中移除道具,组件渲染就很好。但当我尝试访问道具时,会出现错误。

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

  • 问题内容: 我正在使用ReactRouter创建一个多页面应用程序。我的主要组件是,它呈现了所有到子组件的路由。我正在尝试通过路线传递道具,根据我所做的一些研究,子组件利用最常见的方式来挖掘传递下来的道具是通过它们继承的对象。但是,这个对象对我来说是未定义的。在子组件的函数上,我和我返回了一个看起来像这样的对象 看起来根本不像我期望的道具。这是我的详细代码。 父组件(我试图在所有子组件中将“ hi

  • 我对反应和试图理解如何传递道具很陌生。 首先,我设置了一个Navlink组件,该组件包含子类别属性: ,,都是从json文件中获取的,所以这部分是可以的。 每条路线的定义如下: 所以它呈现一个名为