如何使用React Router匹配歧义路径和静态路径

时间:2019-02-08 03:11:24

标签: javascript regex reactjs react-router-v4

我目前正在尝试匹配以下网址

https://www.example.com/discover/exampleuser/review

还有其他与正则表达式匹配的网址

https://www.example.com/discover/community
https://www.example.com/discover/reviews
https://www.example.com/discover/activity

我有以下与最后三个网址完全匹配的代码

<Route path={`${url}/(community|reviews|activity)`} render={prop => (
  <div className='mb-4'>
    <CollectionWidget { ...prop } />
  </div>
)} />

每当我使用以下路径时,它就会起作用

{`${url}/:username`}

但是,当我尝试匹配所有网址时,

{`${url}/(community|reviews|activity|:username)`}

我该如何匹配具有不明确ID的正则表达式

1 个答案:

答案 0 :(得分:3)

听起来似乎不可行,如何同时匹配未命名参数和已命名参数?

好东西,您可以传入2个字符串(或更多):


<Route 
  path={[
    `${base}/(a|b|c)`, 
    `${base}/:username
  `]} 
  component={({ match }) => <div children={JSON.stringify(match.params)} />} />

// /b ---> { 0: "b" }
// /c ---> { 0: "c" }
// /d ---> { "username": "d" }