使用React Router接受未指定数量的属性

时间:2016-05-05 05:01:08

标签: reactjs react-router

我需要一个URL结构,它支持给定路由的未指定数量的路径参数。

作为一个例子,假设我们有一个到thing组件的路径,它将处理各种具有不同数量属性的事物:

/thing/animal/mammal/four-legged-mammal/cat/leopard
/thing/animal/mammal/four-legged-mammal/horse
/thing/animal/fish/salmon

我知道如何处理这个问题的唯一方法就是硬编码这样的路线:

<Route path='/thing/:prop1/:prop2/:prop3/:prop4/:prop5/:prop6' component={Thing}>
</Route>

太糟糕了。

有没有办法声明/thing/any/number/of/slashes/afterwards之类的内容,然后将接收到的参数作为数组或其他东西进行迭代?

1 个答案:

答案 0 :(得分:1)

使用*。例如:<Route path='/thing/*' />

网址参数将在params道具上提供,例如this.props.params*部分将分配到splat,例如this.props.params.splat

来自文档:

  
      
  • () - 包含可选的网址
  • 的一部分   
  • * - 匹配所有字符(非贪婪)到模式中的下一个字符,如果没有,则匹配到URL的末尾,并创建一个   splat param
  •   
  • ** - 匹配所有字符(贪婪)直到下一个/,?或#并创建一个splat param
  •   

https://github.com/reactjs/react-router/blob/master/docs/guides/RouteMatching.md#path-syntax