在Reaction-Routerv5中,我能够通过以下方式指定一组特定的动态路径属性: '/some-path/:someDynamicProperty(value1|value2|value3)'个 因此,此路径的唯一现有选项将是:

  • /some-path/value1
  • /some-path/value2
  • /some-path/value3

任何其他路径(如/some-path/value1124)将被视为未知路径并被*路径捕获

Reaction路由V6中是否有其他 Select ?

我查了documentation,但实际上什么也没找到

推荐答案

Reaction-路由V6删除了路径正则表达式.你可以在"What Happened to Regexp Routes Paths?"阅读更多关于它的内容.

如果您想限制匹配的路由,那么您有几个 Select .

  1. 显式渲染要渲染的路由.您可以将动态路径段值的数组映射到离散管线.

    <Routes>
      ....
      {["value1", "value2", "value3"].map((someDynamicProperty) => (
        <Route
          key={someDynamicProperty}
          path={generatePath("/some-path/:someDynamicProperty", {
            someDynamicProperty
          })}
          element={<MyComponent />}
        />
      ))}
      ...
      <Route path="/404" element={<NotFound />} />
      <Route path="*" element={<Navigate to="/404" replace />} />
    </Routes>
    
  2. 使用与任何内容匹配的动态路径段,并在组件中执行判断,如果它不是有效的路径段,则重定向.

    <Routes>
      <Route
        path="/some-segment/:someDynamicProperty"
        element={<MyComponent />}
      />
      <Route path="/404" element={<NotFound />} />
      <Route path="*" element={<Navigate to="/404" replace />} />
    </Routes>
    
    const MyComponent = () => {
      const { someDynamicProperty } = useParams();
      const match = /(value1|value2|value3)/.test(someDynamicProperty);
    
      if (!match) return <Navigate to="/404" replace />;
    
      return (
        ....
      );
    };
    

Reactjs相关问答推荐

如何在React中的textarea中显示字符数?

Tailwind不使用@apply classes构建,并强制使用类似于移动的viewport

在Reaction常量函数中未更新状态变量

使用筛选器的Primereact DataTable服务器端分页?

在Reaction中单击并显示子组件延迟/动画

使用Next.js和Next-intl重写区域设置

为什么我的react 简单计时器项目不起作用?

有没有办法在 React Router v6 中的路由匹配上运行一些逻辑/功能?

无法通过 fetch 获取数据到上下文中

带有 webpack 错误多个文件匹配路由名称的 Expo-router.无法Bundle 或部署应用程序

在 React 中使用复选框管理状态

基于标记名的博客详细信息分组没有发生

页面加载时不显示数组中的数据

我正在try 使用 cypress 测试我的下拉列表,它 Select 值但不提交它们(手动工作)

如果查询不存在,如何返回所有产品?

交换键仍然引入了 fresh 的 DOM 元素

无法有条件地更新useEffect中的setState

a.active 类在导入 x.scss 文件时有效,但在使用 x.module.scss 时无效

有没有办法只针对 React map 中的一个按钮?

如何判断对话框组件是否位于对话框之上?