Вложенный маршрут не отображает компонент

У меня есть компонент, который нужно отображать под компонентом страницы Home. Теперь я вложил, но компонент не отображается. Хотя если обойтись без вложенности, то все работает. Как я могу это сделать?

export default function App() {
  return (
    <div className = "App">
      <Routes>
        <Route path = "/" element = {<Home />}>
          <Route path = "route1" element = {<Route1 />} />
        </Route>
      </Routes>
    </div>
  );
}
export default function Route1() {
  return (
    <>
      <h2>Route1</h2>
      <Outlet />
    </>
  );
}
export default function Home() {
  return (
    <>
      <h1>Home Page</h1>
    </>
  );
}

Покажите свой компонент Home

Konrad 02.12.2022 15:06

какая у вас react-router версия?

Sundaramoorthy Anandh 02.12.2022 15:30

"реакция-маршрутизатор-дом": "^ 6.4.4",

max_ 02.12.2022 15:33
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте обернуть RoutesRouter

Ссылка на мой stackblitz и играйте с ним..

Кроме того, быстрое чтение >> https://dev.to/tywenk/how-to-use-nested-routes-in-react-router-6-4jhd

import * as React from 'react';
import {
  BrowserRouter as Router,
  Route,
  Routes,
  Link,
  Outlet,
} from 'react-router-dom';

export default function App() {
  return (
    <div className = "App">
      <Router>
        <nav>
          <Link to = "/">Home</Link> <Link to = "route1">Route 1</Link>
        </nav>
        <Routes>
          <Route path = "/" element = {<Home />}>
            <Route path = "route1" element = {<Route1 />} />
          </Route>
        </Routes>
      </Router>
    </div>
  );
}

function Route1() {
  return <h1>"In Route 1"</h1>;
}

function Home() {
  return (
    <React.Fragment>
      <h1>"In Home"</h1>
      <Outlet />
    </React.Fragment>
  );
}

Использование <nav> необязательно.. добавлено только для демонстрации.. вы можете использовать свой собственный метод маршрутизации действий (с помощью ссылок, кнопок и т. д.)

Ответ принят как подходящий

Компонент Home отображается как маршрут макета , поэтому он должен отображать компонент Outlet для вложенных маршрутов.

export default function App() {
  return (
    <div className = "App">
      <Routes>
        <Route path = "/" element = {<Home />}> // <-- Layout route
          <Route path = "route1" element = {<Route1 />} /> // <-- Nested route
        </Route>
      </Routes>
    </div>
  );
}
export default function Home() {
  return (
    <>
      <h1>Home Page</h1>
      <Outlet /> // <-- Nested routes render element here
    </>
  );
}

Route1 нужно отображать Outlet только в том случае, если это также маршрут макета. Outlet можно удалить, если это не так.

export default function Route1() {
  return (
    <>
      <h2>Route1</h2>
    </>
  );
}

Другие вопросы по теме