无法读取未定义的属性'params',React

时间:2018-12-18 20:34:12

标签: reactjs react-router

我有问题,我以正确的方式通过 var s = p.CurrentHospitalizations; foreach (var q in s) { s.OrderByDescending(u => u.Id); } 通过(IMO),但仍然存在该错误:

我的App.js中有这些代码行

这个正在工作:

props

但是这个不起作用,渲染“ Ride”时出现错误

           <Route path="/users/:username" 
               render={(props) => <Profile  isAuthenticated={this.state.isAuthenticated} currentUser={this.state.currentUser} {...props} />}>
           </Route>

错误: TypeError:无法读取未定义的属性“ params”

        <Route path="/ride/:username" 
          render={(props) => <Ride  isAuthenticated={this.state.isAuthenticated} currentUser={this.state.currentUser} {...props} />}>
        </Route>

即使代码位于内部(组件),它们也是相同的...

3 个答案:

答案 0 :(得分:1)

我正在为您当前的问题提供解决方案,但是根据您的目的,您可能想稍微更改一下代码。您正在为undefined组件获得Ride,因为它还有一个额外的渲染器。在这里:

.....
    <div style={{ display: "flex", justifyContent: "center" }}>
        <h6>Made by Konrad Krukar</h6>
    </div>
    <Ride />   <-------- SEE
</Layout>
....

它在您的App组件中。由于它没有被Router包裹,因此无法获得所需的道具。我不知道渲染的目的是什么,但是您可以使用withRouter

答案 1 :(得分:1)

在某些情况下,请检查是否将组件包装在withRouter

带有redux的示例

export default withRouter(
  connect(
    mapStateToProps,
    mapDispatchToProps
  )(ComponentName)
);

或只是功能组件

export default withRouter(ComponentName);

答案 2 :(得分:0)

您可以尝试的另一种替代方法是使用React开发人员工具(如果尚未使用)并查看道具的外观。我上面的用户还建议将其记录在控制台中,这也可以帮助我们找出问题所在。目前,在应用程序当前状态下,它无法读取属性“ match”。

如果我没看错的话,有没有名为“ match”的道具传递给您的组件?