我在React(TypScript)中有一个相当简单的路由设置.我有一个Header和一个Footer,我总是想显示.显示我的头版内容的主页组件.让我有点困扰的部分是项目部分.我有一个名为"项目"的单独页面,显示我参与过的项目.在项目页面上,我想点击实际项目并访问各自的网站,如下面的代码块所示.下面的代码有效,但似乎错误.我try 将其嵌套,这样它看起来就像图片2:

当我将<Outlet/>添加到ProjectsPage组件时,它确实会渲染子路由.然而,它也会呈现父页面.理想情况下,我希望它们能够独立呈现.我希望这是有意义的.

Code Block 1 - Nested routes:

<Router>
  <Header />
  <Routes>
    <Route path="/" element={<Home />} />
    <Route path="/projects" element={<ProjectsPage />}>
      <Route path="portfolio" element={<PortfolioProject />} />
      <Route path="realestateapp" element={<RealEstateProject />} />
    </Route>
    <Route path="*" element={<NoPage />} />
  </Routes>
  <Footer />
</Router>

Code Block 2 - Non nested routes:

<Router>
  <Header />
  <Routes>
    <Route path="/" element={<Home />} />
    <Route path="/projects" element={<ProjectsPage />} />
    <Route path="/projects/portfolio" element={<PortfolioProject />} />
    <Route path="/projects/realestateapp" element={<RealEstateProject />} />
    <Route path="*" element={<NoPage />} />
  </Routes>
  <Footer />
</Router>

推荐答案

您的"代码1"示例与"代码2"不同,因为它将ProjectsPage渲染为布局路由.如果您希望这两个代码示例等效,那么您应该将ProjectsPage渲染为"/projects"布局路由下的索引路由.

示例:

<Router>
  <Header />
  <Routes>
    <Route path="/" element={<Home />} />
    <Route path="/projects">
      <Route index element={<ProjectsPage />}>
      <Route path="portfolio" element={<PortfolioProject />} />
      <Route path="realestateapp" element={<RealEstateProject />} />
    </Route>
    <Route path="*" element={<NoPage />} />
  </Routes>
  <Footer />
</Router>
<Router>
  <Header />
  <Routes>
    <Route path="/" element={<Home />} />
    <Route path="/projects" element={<ProjectsPage />} />
    <Route path="/projects/portfolio" element={<PortfolioProject />} />
    <Route path="/projects/realestateapp" element={<RealEstateProject />} />
    <Route path="*" element={<NoPage />} />
  </Routes>
  <Footer />
</Router>

Typescript相关问答推荐

无法从应用程序内的库导入组件NX Expo React Native

Angular 行为:属性类型从SignalFunction更改为布尔

类型脚本类型字段组合

TypeScrip界面属性依赖于以前的属性-针对多种可能情况的简明解决方案

如何将所有props传递给React中的组件?

从TypeScrip中的其他类型检索泛型类型

分解对象时出现打字错误

为什么ESLint会抱怨函数调用返回的隐式`any`?

Vue3 Uncaught SyntaxError:每当我重新加载页面时,浏览器控制台中会出现无效或意外的令牌

如何 bootstrap TS编译器为类型化属性`T`推断正确的类型?

按函数名的类型安全类型脚本方法包装帮助器

如何过滤文字中的类对象联合类型?

如何缩小函数的返回类型?

如何为特定参数定义子路由?

为什么我的函数arg得到类型为Never?

VITEST警告:当前的测试运行器不支持After Each/teardown挂钩

类型脚本中函数重载中的类型推断问题

在对象数组中设置值

为什么 TypeScript 类型条件会影响其分支的结果?

在Nestjs中,向模块提供抽象类无法正常工作