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

React路由器-无法在路由中使用匹配参数和应用程序状态

方航
2023-03-14

我正在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),props包括匹配参数(url栏的值),但不包括应用程序状态。但是如果我像这样配置它。。。

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

道具包括应用程序状态,但不包括匹配参数。

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

共有2个答案

段干庆
2023-03-14

renderprop获取一个组件。您正在传递组件,但未转发其任何道具。我想你的意思是:

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

    // or {...routeProps} to pass everything
  />
}/>
陈季
2023-03-14

你忘了传递路线道具

<Route path="/project/:key" render={(props)=> <Project {...props} data={this.state.portfolioData}/>} />
 类似资料:
  • 使用redux和反应路由器,我想访问路由指定的组件以外的组件上的路由参数。 我已经对react-router、redux和react-router-redux进行了如下设置,我想从我的redux存储访问reportId参数。 我已经尝试连接react-redux路由器来存储路由状态,但是我发现除了活动路由的完整路径之外,redux内部没有任何有用的存储。这让我可以选择从redux中的路径解析出re

  • 将路由链接到参数 显示特定产品详细信息的组件的路由需要该产品ID的路由参数。我们可以使用以下实现: 注意:product-details路由的路径中的 ,它将参数放在路径中。例如,要查看ID为5的产品的产品详细信息页面,必须使用以下URL:localhost:3000/product-details/5 注意,指令传递一个数组,该数组指定路径和路由参数。或者,我们可以使用JS跳转: Product

  • 我已经被困在这个问题上好几天了,我需要互联网的帮助。 我已经为我的react应用程序创建了一个静态HTML登录页项目(这两个项目是分开的),我希望使用Nginx为这两个项目提供服务。我的登录页项目有自己的目录结构和资产,如下所示: 我的React应用程序是一个创建React应用程序,据我所知,在运行npm build之后,它会为您提供一个名为的文件夹,并将所有项目文件正确绑定,以便您可以部署它。现

  • Tango支持4种形式的路由匹配规则 静态路由 tg.Get("/", new(Action)) tg.Get("/static", new(Action))匹配 URL:/ 到 Action结构体的Get函数 匹配 URL:/static 到 Action结构体的Get函数 命名路由 tg.Get("/:name", new(Action)) tg.Get("/(:name)", new(Act

  • react&React-Router的新功能。我正在使用react-router-4 我有以下组件-login-home-header-sidebar-content 登录组件没有标题或侧栏。 这就是我的路由 应用程序JS 然后在我的Home组件中,我有侧边栏和内容。 home.js呈现方法 侧边栏组件有一个链接,该链接具有“to”值“/home/dashboard”。 不幸的是,这并不奏效。单击

  • 根据这个问题的公认答案,React路由器4不再匹配查询参数。如果我从一个与我的<code>匹配的URL 例如,许多搜索引擎和其他使用搜索栏的网站,包括我正在工作的网站,都使用一个查询参数,通常是< code>q或< code>query。用户可以搜索一个东西,然后决定这不是他/她想要的,并搜索另一个东西。用户可以键入第二个URL或者再次使用搜索栏进行搜索。URL路径中实际上没有放置搜索词的位置,所