Отрисовывается только первая страница react-route

это мое второе использование stackflow, так что извините, если что-то непонятно, я создаю проект React, и когда я ставлю рут, рендерится только первая страница, и не более, мой сайт практически One Page, только одна страница не является страницей «О странице».

App.js

const App = () => {
 
  return (
    <>
      <Routes>
        <Route index path = "/" element = {<Home />} />
        <Route exact path = "/Cardapio" element = {<Cardapio />} />
        <Route exact path = "/Knowmore" element = {<Knowmore />} />
        <Route exact path = "/About" element = {<About />} />
        <Route path = "*" element = {<p>Página não encontrada</p>} />
      </Routes>   
    </>
  );
};
export default App;

Я вижу 4 явных индивидуальных маршрута и 5-й универсальный маршрут. Все они должны отображаться индивидуально, когда их пути совпадают. Что вы ожидаете отрендерить и когда? Вы говорите, что когда вы переходите к другим маршрутам, пользовательский интерфейс не обновляется?

Drew Reese 16.09.2022 01:01

Я хочу, чтобы отображались все страницы, так как это практически Одна страница, я просто хочу прокрутить вниз, чтобы перейти к сеансам, но в последнем сеансе под названием «Знать больше» есть кнопка, на этой кнопке, когда я нажимаю, я хочу открыть новую страница, которая будет «О программе», я уже использую useNavigate для кнопки и цели _Blank, проблема в том, что она отображает только первую страницу маршрута, то есть «Главную».

Gustavo Souza 16.09.2022 01:15

Затем все компоненты, которые вы хотите на одной «странице», должны отображаться на одном и том же маршруте. Используйте необработанные теги привязки для ссылки на хэш-идентификаторы на странице.

Drew Reese 16.09.2022 01:31

Не могли бы вы показать мне, как это сделать?

Gustavo Souza 16.09.2022 02:15

Какая у вас версия реакции?

Nicholi Jin 16.09.2022 03:11

реагировать версии 18.2.0

Gustavo Souza 16.09.2022 03:40
Поведение ключевого слова "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
6
55
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуйте обернуть содержимое тегом <BrowserRouter>.

Если бы OP не отображал маршруты в компоненте маршрутизатора, они, вероятно, спрашивали бы о множестве инвариантных ошибок. Вместо этого маршруты отображают контент, но не тот контент, который хочет OP. Я не верю, что это проблема.

Drew Reese 16.09.2022 02:20

Попробуй это

const App = () => {
  return (
    <BrowserRouter>
      <Routes>
         <Route index element = {<Home />} />
         <Route path = "Cardapio" element = {<Cardapio />} />
         <Route path = "Knowmore" element = {<Knowmore />} />
         <Route path = "About" element = {<About/>} />
         <Route path = "*" element = {<NoPage />} />
      </Routes>
    </BrowserRouter>
  );
}

если это не работает, пожалуйста, дайте мне знать. Это может быть связано с версией реакции v17 или v18.

показывает это: «Вы не можете визуализировать <Router> внутри другого <Router>. В вашем приложении никогда не должно быть более одного».

Gustavo Souza 16.09.2022 03:42

Как я указал в одном из других ответов, если бы в OP отсутствовал маршрутизатор, было бы множество инвариантных ошибок.

Drew Reese 16.09.2022 03:43
Ответ принят как подходящий

Если вы хотите визуализировать несколько компонентов вместе по одному маршруту, все они должны быть объединены и объединены по одному и тому же пути.

Пример:

<Routes>
  <Route
    path = "/"
    element = {
      <>
        <Home />
        <Cardapio />
        <Knowmore />
      </>
    }
  />
  <Route path = "/About" element = {<About />} />
  <Route path = "*" element = {<p>Página não encontrada</p>} />
</Routes>

Если вы хотите связать отдельные компоненты, например, home, cardapio и другие «разделы», назначьте им соответствующие атрибуты элемента id и нацельте на них визуализированные необработанные теги привязки.

Основной пример:

const Home = () => (
  <div id = "home">
    Home
  </div>
);

const Cardapio = () => (
  <div id = "cardapio">
    Cardapio
  </div>
);

const Knowmore = () => (
  <div id = "knowmore">
    Knowmore
  </div>
);

Навигационные ссылки в App:

<nav>
  <ul>
    <li>
      <a href = "#home">Home</a>
    </li>
    <li>
      <a href = "#cardapio">Cardapio</a>
    </li>
    <li>
      <a href = "#knowmore">Know More</a>
    </li>
    <li>
      <Link to = "/about">About</Link>
    </li>
  </ul>
</nav>

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