反应路由器 - 不能在路由

时间:2018-03-31 08:04:31

标签: javascript reactjs react-router

我在React中构建设计组合。投资组合数据处于应用状态。

var portfolioData = [
    {
      key: 1,
      projectName : "project one",
      tags: ["ux", "dev"],
      mdFileName: "p1.md"
    },{
      key: 2,
      projectName : "project two",
      tags: ["ux", "dev"],
      mdFileName: "p2.md"
    },{
      key: 3,
      projectName : "project three",
      tags: ["ux", "dev"],
      mdFileName: "p3.md"
    }
]

我使用React Router为每个项目创建 / project /:projectID 路由。将根据URL中的值使用该州的项目,例如 website.com/project/1

这是问题所在。如果我像这样配置路线...

<Route path="/project/:key" component={Project} />

console.log(this.props),道具包含MATCH PARAMS(网址栏的值),但不包括应用状态。但如果我这样配置它......

<Route path="/project/:key" render={()=><Project data={this.state.portfolioData}/>} />

道具包括app状态,但不包括MATCH PARAMS。

有谁知道这个NOOB做错了什么?

2 个答案:

答案 0 :(得分:2)

你忘了传递Route道具

<Route path="/project/:key" render={(props)=> <Project {...props} data={this.state.portfolioData}/>} />

答案 1 :(得分:0)

render道具需要一个组件。你 传递一个组件但不转发任何道具。我想你的意思是:

<Route path="/project/:key" render={routeProps => 
  <Project 
    data={this.state.portfolioData} 
    projectKey={routeProps.match.params.key}

    // or {...routeProps} to pass everything
  />
}/>