允许在 React 的路由参数中使用斜杠

Pra*_*tha 10 reactjs react-router-v4

我有一个这样的路由器:

<Route path="/blog/:date/:folder" render={(props: any) => <Home />
Run Code Online (Sandbox Code Playgroud)

它适用于:

http://localhost/blog/2017-05-20/test
Run Code Online (Sandbox Code Playgroud)

但是,:folder可以有斜杠(子目录),我想一次解析文件夹中的所有路径。

不是工作:

http://localhost/blog/2017-05-20/test/sub/dir
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我只得到test. 我想:folder作为test/sub/dir一个整体。

有没有办法用 React Router 实现这一点?

预期

:date => '2017-05-20'
:folder => 'test/sub/dir'
Run Code Online (Sandbox Code Playgroud)

实际的:

:date => '2017-05-20'
:folder => 'test'
Run Code Online (Sandbox Code Playgroud)

jag*_*ler 21

是的,您可以通过将 a 添加+到您的路线路径来做到这一点。所以,像这样:

<Route path="/blog/:date/:folder+" ... />
Run Code Online (Sandbox Code Playgroud)

该库用于匹配路径。所以对于更高级的匹配案例,这是一个更好的地方,然后查看 React Router 文档。

  • 请注意,引用的库未与 React Router v6 一起使用,因此该解决方案不起作用。相反,通配符“*”可能会起作用,具体取决于您的用例。 (8认同)
  • 对我来说, `.../:folder*` 将解析为路径,但组件中的文件夹参数仅解析为 :folder 的第一段(例如, 'test/sub/dir` ... 文件夹useParams 只是“测试”) (3认同)