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
中捕获。这不起作用。由于捕获路径的名称是我试图捕获的实际名称,因此我需要事先知道该名称。。。