2

React Router 4.0.0 带有Regex来验证查询字符串参数。但是,它似乎与 ES6 模板文字不兼容。

这是一个非常简单的例子:

<BrowserRouter>
  <Switch>
    <Route Route path={routeConstant} component={MyComponent} />
  </Switch>
</BrowserRouter>

如果您尝试使用以下值,您会看到前 2 个常量有效,但第三个无效。

const root = 'folder'
const routeConstant1 = '/folder/:id(\d+)'  // <= /folder/21 matches
const routeConstant2 = `/${root}/:id`      // <= /folder/21 matches
const routeConstant3 = `/${root}/:id(\d+)` // <= /folder/21 does not match

可能有一个很好的解释(总是有),但我真的很感激一些指示,因为这感觉有点混乱。提前致谢。

4

1 回答 1

2

好的,我猜我发布这个问题的速度太快了。

答案在于模板文字的工作方式: ECMAScript 6 - 模板文字

=>“不解释反斜杠”

所以让 routeConstant3 工作的解决方案就是这样写:

const routeConstant3 = `/${root}/:id(\\d+)`
于 2017-03-28T10:51:08.467 回答