Страница ошибки в ReactJS отображается под каждым отдельным компонентом страницы

Мне удалось создать для себя сайт с помощью ReactJS. Все работает нормально, за исключением того, что последнее добавление страницы с ошибкой отображается под каждой другой отображаемой страницей. Т.е. если я перейду в / localhost: 3000 / blog, где отображаются все элементы блога, под этим и выше нижним колонтитулом также отображается компонент Error404. Любой совет, чтобы я мог расширить свои пока ограниченные знания? Компонент приложения следующий:

const App = () => {
  return (
    <Router>
      <Switch>

        <Route exact path = "/">
          <Home />
        </Route>
      
          <div className = "appWrapper">
            <NavBar />


              <Route exact path = "/blog">
                  <Blog />
              </Route>

              <Route exact path = "/article/:id">
                        <Article />
                    </Route>

              <Route exact path = "/contact">
                <ContactForm />
              </Route>
              
              <Route path = "*">
                <Error404 />
              </Route>
              
            <Footer />
          </div>

      </Switch>
    </Router>
    
  )
}

Попробуйте удалить path = "*" для Error404. Связанные - stackoverflow.com/a/43284528/7867822

Anurag Srivastava 04.04.2021 11:09
Поведение ключевого слова "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) для оценки ваших знаний,...
0
1
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вам нужно добавить еще один Switch, обертывающий ваш Маршрут, чтобы гарантировать, что одновременно будет отображаться только один Маршрут.

const App = () => {
  return (
    <Router>
      <Switch>

        <Route exact path = "/">
          <Home />
        </Route>
      
          <div className = "appWrapper">
            <NavBar />
              <Switch>
              <Route exact path = "/blog">
                  <Blog />
              </Route>

              <Route exact path = "/article/:id">
                        <Article />
                    </Route>

              <Route exact path = "/contact">
                <ContactForm />
              </Route>
              
              <Route path = "*">
                <Error404 />
              </Route>
              </Switch>
            <Footer />
          </div>

      </Switch>
    </Router>
    
  )
}

Вот рабочий пример.

Сработало дружище! Спасибо! Теперь я начинаю понимать, как все это работает!

Tony 04.04.2021 22:03

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