reactjs - 为什么路由的可选参数旁边有括号

标签 reactjs redux

我是 React 新手。只是一个关于BrowserRouter(Router)的问题。

我看到一些代码如下:

import { BrowserRouter as Router } from "react-router-dom";

...
<Switch>
    {routes.map(r =>
        <Route key={r.url}
            path={`/:datatype(${r.datatype})/:mode?/:id?`}
            component={xxx} />
    )}
    <Redirect to={xxx} />
</Switch>

为什么可选数据类型参数旁边有括号:

`/:datatype("product")/:mode?/:id?`    // let's say r.datatype is a string of "products"

Full source code on GitHub

最佳答案

:datatype(${r.datatype})custom match范围。仅当 datatype 参数与 r.datatype 中的正则表达式匹配时,Route 才被视为匹配。在您的示例中,正则表达式是字符串 "product",它需要完全匹配。

要测试它,请尝试此 Express Route Tester 。使用路线:

/:datatype(product)/:mode?/:id
  • 对于路径 /product/random/123,它返回与评估为 product 的数据类型的匹配项。
  • 对于路径 /blog/random/123,它将不匹配。

React Router 使用 path-to-regexp 匹配路径.

关于reactjs - 为什么路由的可选参数旁边有括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59025857/

相关文章:

javascript - 如何从下拉 react /redux更新产品列表

javascript - 如何在登录后根据用户刷新数据而不重新加载页面?

javascript - 为什么 Redux 将我的正则表达式值保存为对象类型

reactjs - 无法从react js访问httponly cookie,但可以在 postman 应用程序中访问!这怎么可能?

reactjs - 用于构建 UI 组件的react-cosmos、atelier、React Storybook

javascript - 如何检查reactjs映射中的未定义

javascript - 在reactjs中返回带有更新数组的整个对象

javascript - 在 RxJS 中制作打字计时器;跟踪打字时间

javascript - 如何在 parent 调整大小时重新呈现 react-grid-layout 列的宽度?

javascript - 如何防止 Redux 转换不可变数据(使用 Transit.fromJSON 时)?