Реагировать на проблемы с навигацией по страницам

Я пытаюсь перейти на страницу входа в систему с помощью реактивного маршрутизатора, но при нажатии кнопки следующая страница отображается на той же странице без фактического перехода на следующую страницу.

Вот мой код

import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Switch, Link } from 'react-router-dom'; 
import $ from 'jquery'; 
import { Login } from './Login';

export class Index extends Component {

  render() {

     return (
        <div>
          <div align='center'>
            <h3> Project Management System </h3>
          </div>

          <p>
             Here, you can search for the previous B.sc, M.sc and Ph.D projects that have been carried out in the department. <br/><br/>
          </p>

         <Router>
           <div>
              <Link to = "/login">Continue </Link>
              <Route exact path = {"/login"} component = {Login}/>
          </div>
       </Router>
     </div>
);

} }

Когда я нажимаю кнопку «Продолжить», она должна показывать только страницу входа, без отображения предыдущей страницы, но здесь отображается как предыдущая страница, так и страница входа.

Реагировать на проблемы с навигацией по страницам

Маршрутизатор управляет отображаемыми компонентами. Если у вас есть контент вне маршрутизатора, например теги h3 и p. Они будут отображаться всегда, независимо от того, какой компонент визуализирует маршрутизатор. Я бы рекомендовал поместить эти строки вместе с вашим Link в отдельный компонент, чтобы экраны отображались отдельно друг от друга.

seanulus 05.01.2019 00:30
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
1
35
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

--Редактировать--

Переместите вашу кнопку и информацию в другой компонент, назовите его Home или что-то подобное.

Home.js

import React from "react"
import { Link } from "react-router-dom"

const Home = () => {
 return(
  <div>
    <div style = {{textAlign: "center"}}>
       <p>Your paragraph</p>

       <Link to = "/login">Continue </Link>
    </div>
  </div>
 )
}
export default Home

Index.js теперь у вас будет более чистый маршрутизатор

сохраните весь свой импорт и добавьте компонент Home

export class Index extends Component {

  render() {
  return (
    <div>
     <Router>
       <div>
          <Switch>
            <Route path = "/" exact = {true} component = {Home}>
            <Route path = "/login" component = {Login}/>
          </Switch>
      </div>
   </Router>
 </div>

Спасибо, но проблема не устранена.

Ayodele 05.01.2019 00:15

Ой, простите. Я только что понял, что у вас есть кнопка и контент в том же месте, что и ваш роутер. Если вы сделаете это, вы всегда будете отображать это. Позвольте мне переработать свой ответ, чтобы помочь вам.

Chris Ngo 05.01.2019 00:25

Причина такого поведения очень проста. Вы обернули в роутер только компонент входа в систему. Вы должны создать маршруты с помощью компонента Switch, чтобы изменить представления. Вот пример https://codesandbox.io/s/2xqxqpo550

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