reactjs React路由器设置多个包含头和嵌套路由的路由文件

zz2j4svz  于 2023-03-22  发布在  React
关注(0)|答案(1)|浏览(197)

我目前正在做一个Web项目,它有两个主要部分,一个展示站点和一个用户站点。为了区分这两个不同的站点,我需要将它们分成两个设置文件,每个文件都有一个特定的头。我看到过一些解决方案,包括制作一个数组并将其Map到主文件中,但是我没有找到任何嵌套路由和组件的解决方案。
这个问题类似于this one,只是我需要实现嵌套的路由和布局组件

索引.js

<BrowserRouter>
    <Routes>
      {ShowcaseRoute}
      {UserRoute}
    </Routes>
  </BrowserRouter>

展示路线

export default function ShowcaseRoute () {
  
  const Layout = () => {
    return (
      <>
        <Header />
        <Outlet />
        <Footer />
      </>);
  }

  return (
    <Route element={<Layout />}>
      <Route index path="/" element={<Home />}/>
      <Route path='/about' element={<About />} />
      <Route path='/contact' element={<Contact />} />
    </Route>
  );
}

用户路由

export default function UserRoute () {
  return (
    <>
      <Route path='/auth'>
        <Route />
      </Route>
      <Route path='/user'>
        <Route />
      </Route>
    </>
  );
}

(The用户路由当前不完整以及此问题的原因)

icnyk63a

icnyk63a1#

ShowcaseRouteUserRoute都是React组件。在React中,它们被渲染为JSX***,例如<ShowcaseRoute />而不是{ShowcaseRoute}
示例:

<BrowserRouter>
  <ShowcaseRoute />
  <UserRoute />
</BrowserRouter>

ShowcaseRouteUserRoute都是渲染路由,因此它们必须将Route组件 Package 在Routes组件中。
请注意,我还单独移动了Layout组件声明,因为它通常是一种反模式,用于在其他React组件中声明React组件,因为每次父组件渲染/重新渲染时都会重新创建它们,从而导致整个子ReactTree被重新挂载。
x一个一个一个一个x一个一个二个x

相关问题