反应路由器 - 将Slug作为道具传递给子组件

时间:2017-02-16 12:15:23

标签: wordpress reactjs react-router wordpress-rest-api

我试图创建一个页面显示自己的可能性,只要数据存在 - 我使用WordPress REST API,最终用户将能够为自己创建显然赢得的页面&#39 ; t出现在路由器中,因为我无法预见他们最终想要创建的所有页面。

我尝试解决此问题的方法是将一些通配符传递给react-router(图1)。

图1:
Picture 1

因此,根据我的理解,如果用户访问了我的网站并放入/giraffe,则会将他们带到<About />组件,并将/giraffe放入pageSlug参数。但是,它会将:slug放在该参数中。

当我使用React Dev Tools时,我可以看到我的<App />(顶级)组件和我的<About />组件之间有一个没有名称且有参数的元素 - 参见图2:

Picture 2

这个组件包含以下信息<component location={pathname: "/giraffe", search: "", hash: ""} params={slug: "giraffe"} />等。有什么方法可以将这些参数传递到路线中吗?

以下是我如何返回我的<About />组件 - 图3:

Picture 3

这是我第一次使用React和React-Router,所以我很欣赏这可能是一个愚蠢的问题,或者我可能做错了,但是我一直在搜索问题和几个小时的答案,而且不是更明智的。我觉得我应该能够访问这些参数,但不知道。

帮助?

1 个答案:

答案 0 :(得分:1)

来自docs

  

当路线与URL匹配时,将呈现路线的组件。路由器在渲染时会将以下属性注入到组件中。

     

PARAMS

     

网址的动态细分。

因此,如果您的路线定义如下:

<Route path="/:slug" component={About} />

您可以访问this.props.params.slug以获取参数值。