Reactjs ReactRouter:捕获部分路径,同时指定要匹配的值

Reactjs ReactRouter:捕获部分路径,同时指定要匹配的值,reactjs,react-router,Reactjs,React Router,我有一个/somePath/:name格式的路径,其中:name需要是已知字符串之一。我了解到Route组件支持要匹配的URL数组,因此很容易生成受支持路径的列表,但这样做会减少自动捕获路径部分的便利性 例如,我目前有一个如下定义的路由组件 <Route exact path={SomeKnownNames.map(n => `/somePath/${n}`)} component={SomeRoute} />} /> `/somePath/${n}`}组件={Some

我有一个
/somePath/:name
格式的路径,其中
:name
需要是已知字符串之一。我了解到Route组件支持要匹配的URL数组,因此很容易生成受支持路径的列表,但这样做会减少自动捕获路径部分的便利性

例如,我目前有一个如下定义的路由组件

<Route exact path={SomeKnownNames.map(n => `/somePath/${n}`)} component={SomeRoute} />} />
`/somePath/${n}`}组件={SomeRoute}/>}/>
这应该可以工作,但我无法再访问路由组件中的
props.match.params
中的值。有没有一种方法可以在不手动解析URL的情况下实现这一点

让我补充一点,如果
:name
的值不在已知字符串中,我不希望进行匹配


我正在使用react路由器dom v5。

您是否尝试过这样做:

path={SomeKnownNames.map(n => `/somePath/:${n}`)}
添加
允许将名称视为参数。试试看,如果没有关系,请告诉我。我可能需要更多的信息来更好地回答你的问题


另外,尝试使用React Router中的useParams()钩子。它在您的组件中显示了什么

显然,这是可行的:

<Route exact path={SomeKnownNames.map(n => `/somePath/:name(${n})`)} component={SomeRoute} />} />
`/somePath/:name(${n})`}component={SomeRoute}/>

i、 e.如果您执行
/somePath/:name(foo)
,那么它将匹配
/somePath/foo
,并且
foo
将在路由组件的
props.match.params.name
中捕获。

这不起作用。由于捕获路径的名称是我试图捕获的实际名称,因此我需要事先知道该名称。。。