当前位置: 首页 > 面试题库 >

无法读取未定义的属性“ params”(响应路由器4)

邓正谊
2023-03-14
问题内容

我设置了渲染组件的路线:

<Route exact path="/page/:id" location={this.props.location} key={this.props.location.key} render={({ location }) => (
    <PageStart key={this.props.location.key} />
)} />

然后在该组件(PageStart)中,我有:

this.props.match.params.id

但这会引发错误:

Cannot read property 'params' of undefined

简单调用时传递道具component={}似乎可以正常工作,但在render函数中不行。为什么?


问题答案:

因为render您没有将路由器传递的默认道具传递到组件中,例如比赛,历史记录等。

当您编写此代码时:

<PageStart key={this.props.location.key} />

这意味着组件中没有任何props价值PageStart

这样写:

render = {props => <PageStart {...props} key={this.props.location.key} /> } />

现在{...props}将所有值传递给PageStart组件。



 类似资料:
  • 我所遵循的教程使用的是React-Router 2.0.0,但在我的桌面上,我使用的是4.1.1。我试图搜索更改,但没有找到有效的解决方案。

  • 我是一个新的整体反应和非常新的反应路由器。我正在构建一个应用程序,其中显示一个评论列表,当用户单击一张评论卡时,它们将被重定向到显示该卡详细信息的页面。我已经对大部分逻辑进行了编码,但我正在努力实现React路由器。这是我到目前为止的组件。 我不确定我的路线总体编写方向是否正确,在浏览器中,我遇到了以下错误:“TypeError:无法读取未定义的“getCurrentLocation”属性”有人能

  • 问题内容: 我在使用React Router时遇到了一些麻烦(我使用的是version ^ 4.0.0)。 这是我的index.js App.js就是任何东西。我在这里发布基本的,因为这不是问题(我相信) 这就是我检查控制台日志时发生的情况 哦,这是package.json,以防万一 我已经在其他地方检查过,但是我没有找到解决方法。 非常感谢你们的耐心和帮助!! 问题答案: 您做错了几件事。 首先

  • 我正在组装我的第一个基于react的应用程序。我有一个工作应用程序,并已在反应路由器编织。我和巴贝尔在一起。 我在chrome的开发者控制台上得到了以下信息- 我在components/Login.js上有以下组件 在我的app.js我有以下几点- 我认为我的错误在于我导出/导入我的组件的方式,因为错误存在于另一个组件中,并且当我更改上面第一个导入的组件时,错误落在该组件上。 我尝试了各种方法,如

  • 问题内容: 我正在尝试在使用包中设置路由,并且遇到以下问题 : 链接到图像:https : //postimg.org/image/v0twphnc7/ 我在中使用的代码 我设法确定的问题是,当我将投资组合定义为简单组件时,它可以工作。 但是,当我从Component扩展它时,就会出现错误: 您能解释一下“正常”组件和类组件之间的可能区别以及为什么出现以下错误。 问题答案: 假设您正在导入的正确,

  • 为什么我得到这个错误不能读取未定义的触摸属性? 为什么它不能读取,但它可以读取 当我们使用