我需要一个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
之类的内容,然后将接收到的参数作为数组或其他东西进行迭代?
答案 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