Ссылки маршрутизатора ReactJS не работают при нажатии на них

У меня есть следующий базовый ReactJS но он не меняет маршруты.

Stackblitz: https://stackblitz.com/edit/react-testing-routes?file=src%2Fpages%2FPage1.jsx

Демо: https://react-testing-routes.stackblitz.io/page3

Здесь у вас есть исходный код:

App.js

import React from "react";
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import Page1 from './pages/Page1';
import Page2 from './pages/Page2';
import Page3 from './pages/Page3';
import "./style.css";

export default function App() {
  return (
    <BrowserRouter>
      <Switch>
        <Route path = "/" component = {Page1 } />
        <Route path = "/page2" component = {Page2 } />
        <Route path = "/page2" component = {Page3 } />
      </Switch>
    </BrowserRouter>
  );
}

Страница1.jsx

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

class Page1 extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      letter: 'A',
    };
  }

  render() {
    return <>
      <div>You are currently on: Page 1 (Letter: {this.state.letter})</div>
      <Link to = "/page2">Page 2</Link><br />
      <Link to = "/page3">Page 3</Link><br />
    </>;
  }
}

export default Page1;

Страница2.jsx

// similar as Page1.jsx

Страница3.jsx

// similar as Page1.jsx

пакет.json

{
  "name": "react",
  "version": "0.0.0",
  "private": true,
  "dependencies": {
    "react": "17.0.0",
    "react-dom": "17.0.0",
    "react-router-dom": "^5.2.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "devDependencies": {
    "react-scripts": "latest"
  }
}

Любая идея о том, как заставить его изменить маршруты?

Спасибо!

Поведение ключевого слова "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
0
87
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вам нужно добавить реквизит exact, иначе /page2 будет соответствовать /:

  <Switch>
    <Route exact path = "/" component = {Page1} />
    <Route exact path = "/page2" component = {Page2} />
    <Route exact path = "/page3" component = {Page3} />
  </Switch>

https://stackblitz.com/edit/react-testing-routes-ktkwg5?file=src.jsx

использовать exact

    <BrowserRouter>
      <Switch>
        <Route exact path = "/" component = {Page1 } />
        <Route path = "/page2" component = {Page2 } />
        <Route path = "/page2" component = {Page3 } />
      </Switch>
    </BrowserRouter>

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