React Router - 将 Slug 作为道具传递给子组件

React Router - passing Slug as a prop to child Component

我正在尝试创建一个页面,只要有数据就可以自行显示 - 我正在使用 WordPress REST API,最终用户将能够为自己创建页面显然不会出现在路由器中,因为我不可能预见到他们最终想要创建的所有页面。

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

图片1:

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

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

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

这是我返回 <About /> 组件的方式 - 图 3:

这是我第一次使用 React 和 React-Router,所以我明白这可能是一个愚蠢的问题,或者我可能做错了,但是我一直在浏览问题和答案几个小时后,我 none 变得更聪明了。我觉得我应该能够访问这些参数,但不知道。

帮忙?

来自docs

A route's component is rendered when that route matches the URL. The router will inject the following properties into your component when it's rendered.

params

The dynamic segments of the URL.

所以如果你的路由定义如下:

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

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