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

React Router V4仅允许URL中的某些参数

方砚
2023-03-14

我使用的是React路由器V4,我有此路由器的配置:

  <Router history={customHistory}>
    <Switch>
      <Route exact path={`/:lng?`} component={Page} />
      <Route path={`/:lng?/firstUrl`} component={Page}/>
      <Route path={`/:lng?/secondUrl`} component={Page}/>
      <Route component={NoMatch} />
    </Switch>
  </Router>

lng是可选的语言参数,它应该与模式匹配,例如ende或不匹配。例如,应用程序利用这些路由:

www.website.com/en
www.website.com/en/
www.website.com/  - will load default lang
www.website.com  - will load default lang
www.website.com/de
www.website.com/de/

另外,我还有一个额外的组件,在其中我定义了函数的路由:

  <ModalRoute component={SomeURL} path={`/:lng?/SomeURL`} parentPath={`/${lang}/`} />
  <ModalRoute component={SomeURL2} path={`/:lng?/SomeURL2`} parentPath={`/${lang}/`} />

因此,我希望实现的结果是,只接受允许的语言代码(和空参数),而不接受的代码将被重定向NoMatch组件。

可能吗?如何实现这一目标?
非常感谢这个例子

共有1个答案

南门嘉
2023-03-14

您可以在路径中使用正则表达式。

对于具有指定选项的必需参数:

<Route path="/about/:lang(en|de)/" exact component={About}/>

对于可选参数:

<Route path="/about/:lang?/" exact component={About}/>

用于具有指定选项的可选参数

<Route path="/about/:lang(en|de)?/" exact component={About}/>

供进一步阅读

 类似资料:
  • 问题内容: 我正在获取月份号作为输入。我成功地将UITextField中的字符数限制为2。但是我希望用户仅输入来自的值,而不要输入其他值。当用户键入数字时,即必须同时进行。如果我使用简单的条件检查每个字符并部分返回false,则文本字段将不允许我使用clear或重新键入其他任何字符。谁来帮帮我。 问题答案: 将键盘类型设置为数字键盘 加上这个

  • 我试图只允许某些ip地址访问注册路由,但我得到类型错误: 传递给App\Http\Controller\Auth\AuthController的参数1必须是Illumate\Http\Request的实例,没有给出,在第19行的目录\供应商\laravel\框架\src\Illumate\Foundation\Auth\注册sers.php中调用 这是我在中的方法: 有人知道我将如何做到这一点吗?

  • 我创建了一个Treeview(javafx),它看起来像: 我现在想要的是,只有“tour”-树项是可选择的。但我不知道怎么做。 我已经用ChangeListener尝试过了,但我只能用它刷新选项卡(TabPane)的内容...刷新很好...但是可以选择“delivery”-TreeItems:(

  • 这个问题被问了好几次,我花了好几个小时来研究答案。但是,我无法使我的代码正常工作。问题就在这里。 我有一个组件,它是一个包装器。我有多个组件作为子组件进入组件。 在我的组件中,我想创建一个新的子数组,它只由组件组成。我只想忽略其他一切。同时在控制台上显示一些警告,除了组件子元素之外的任何内容都将被忽略,这很好,但无论如何,这在这一点上并不重要。 问题是,我正在使用TypeScript,无法访问。

  • 我一直在捕捉非数字时遇到问题。 我试过了,但抓不住。如果我让它捕获非数字,但不让用户再次尝试输入。。。它完全停止了我的代码。 这是我的密码:

  • 我用Spring靴和Spring安全。 我这样添加基于url的安全性 有没有办法只授权get、post、put…在url上担任某些角色?