代码之家  ›  专栏  ›  技术社区  ›  helion3

将根路径重定向到react路由器6中的子路径

  •  1
  • helion3  · 技术社区  · 1 年前

    我正试图强制重定向确切的根路径 / 到一个子路径(我们有几个模块,根目录只会将您引导到第一个模块,在实际的根目录中没有什么可显示的)。

    然而,我找不到任何根路径的例子,并尝试其他方法( Navigation to 只需触发一个无限循环。

    <Route element={<Navigate replace to='/module/submodule' />} path='/'>
      <Route element={<Module />} handle={{ crumb: (): string => 'Module' }} path='module'>
        <Route element={<Submodule />} handle={{ crumb: (): string => 'Submodule' }} path='submodule' />
      </Route>
    </Route>
    

    我需要重定向 / /module/submodule

    2 回复  |  直到 1 年前
        1
  •  3
  •   Jacob Smit    1 年前

    您应该能够使用索引路由。

    <Route path='/'>
      <Route element={<Navigate replace to='/module/submodule' />} index />
      <Route element={<Module />} handle={{ crumb: (): string => 'Module' }} path='module'>
        <Route element={<Submodule />} handle={{ crumb: (): string => 'Submodule' }} path='submodule' />
      </Route>
    </Route>
    
        2
  •  3
  •   magino    1 年前

    这对吗 react-router-dom:6.15.0 ?

    const router = createBrowserRouter([
        {
            path: '/',
            element: <App />,
            errorElement: <ErrorPage />,
            children: [
                {
                    index: true,
                    element: <Navigate replace to='/projects' />,
                },
                {
                    path: '/projects',
                    element: <ProjectsPage />,
                },
            ],
        },
    ])
    
        3
  •  1
  •   Drew Reese    1 年前

    将重定向移动到嵌套的“全部捕获”路由中。任何路由不匹配的内容都将重定向到 "/module/submodule" .

    <Route path="/">
      <Route
        path="module"
        element={<Module />}
        handle={{ crumb: (): string => 'Module' }}
      >
        <Route
          path="submodule"
          element={<Submodule />}
          handle={{ crumb: (): string => 'Submodule' }}
        />
      </Route>
      <Route path="*" element={<Navigate replace to="/module/submodule" />} />
    </Route>