当前位置: 首页 > 知识库问答 >
问题:

具有可选路径和可选参数的React Router 4

慎望
2023-03-14
<Route exact path="/tasks/:id" render={(props) => (
  <AsyncTask {...props} profile={this.state.profile} />
)} />
/tasks/:id/notification/:notificationId
/tasks/:id/(notification/:notificationId)?
/tasks/:id/(notification)?/:notificationId?

但它匹配和路径没有notificationid

共有1个答案

欧阳向文
2023-03-14

可悲的是,似乎没有办法做到这一点。理想的方法是为您的目的创建两个单独的路线。

<Route exact path="/tasks/:id" component={...} />
<Route exact path="/tasks/:id/notification/:notificationId" component={...} />

如果您确实必须只声明一条路由,则可以使用自定义regex规则(在参数名称声明之后用括号括起来的部分):

<Route exact path="/tasks/:id/:notificationId(notification/\d+)?" component={...} />

然而!!-注意notificationid参数将包括子字符串“notification”。例如,如果您有:

    null

但不是:

  • 任务/123/通知
  • tasks/123/notification/abc
  • 任务/123/456

等等...

 类似资料:
  • 问题内容: 我可以设置带有可选参数的路由(相同的模板和控制器,但是如果某些参数不存在,则应将其忽略)? 因此,只编写一个规则,而不是编写以下两个规则? 这样的事情([此参数是可选的]) 我在他们的文档中找不到任何内容。 问题答案: 看来Angular现在已对此提供支持。 从最新的(v1.2.0)文档中: 可以包含带问号()的可选命名组

  • 我对如何从根开始做(多个)可选路径参数有点困惑。我用的是React-Router3和Redux4.3。 据我所知,应该可以工作,但在加载应用程序时,我遇到了以下错误:

  • 我在SwaggerHub注册,并使用OpenAPI3.0创建了一个新的API。在我的API中,路径有2个非必需参数,但我不能将它们设置为not required--编辑器显示“not alleving values”错误。 以下是我的API定义: 但是,如果删除属性,则会出现2个错误: 什么是有效的语法?

  • 阅读使用的所有优点,但是,如果我们想在查询参数使用此属性时拥有可选参数,它不起作用。它仍然将所有参数验证为强制性的。知道如何使其可选吗? 执行此代码时,它始终需要 。没有此参数,它不会运行。 编辑:即使传递了id的默认值,它也不起作用。

  • 所以我有一些路线,比如<code>/category/tech</code>和<code</categority/tech/new<code>和<code>/category/tech/old</code>等等 他们都使用 或者我必须分别定义它们,就像

  • 问题内容: 我想用可选的path参数声明一个路径,因此当我添加它时,页面会做一些额外的事情(例如,填充一些数据): http:// localhost / app / path / to / page <=渲染页面 http:// localhost / app / path / to / page / pathParam <=根据pathParam使用某些数据渲染页面 在我的React Rout