Ecmascript 6 React路由器v4+;正则表达式don';不喜欢模板文本
React Router 4.0.0附带Regex,用于验证查询字符串参数。 但是,它似乎与ES6模板文本不兼容 下面是一个非常简单的例子:Ecmascript 6 React路由器v4+;正则表达式don';不喜欢模板文本,ecmascript-6,react-router,template-literals,Ecmascript 6,React Router,Template Literals,React Router 4.0.0附带Regex,用于验证查询字符串参数。 但是,它似乎与ES6模板文本不兼容 下面是一个非常简单的例子: <BrowserRouter> <Switch> <Route Route path={routeConstant} component={MyComponent} /> </Switch> </BrowserRouter> 如果您尝试使用以下值,您将看到前两个常量有效,但第
<BrowserRouter>
<Switch>
<Route Route path={routeConstant} component={MyComponent} />
</Switch>
</BrowserRouter>
如果您尝试使用以下值,您将看到前两个常量有效,但第三个常量无效
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
const root='folder'
const routeConstant1='/folder/:id(\d+)'/好的,我想我把那个问题发得太快了
答案在于模板文字的工作方式:
=>“不解释反斜杠”
因此,让routeConstant3工作的解决方案就是这样写:
const routeConstant3 = `/${root}/:id(\\d+)`
它知道/folder/21,但/folder/21abc应该是无效路由,这就是该检查失败的原因,并且react路由器试图呈现无效路由。