ReactJS — проблема с маршрутизатором

У меня есть компонент, который импортирует маршрутизатор, и он не работает, и нет никаких сообщений об ошибках. Страницы не отображаются в браузере. Это приложение курса. Из-за того, что этот курс немного устарел, некоторые вещи могут быть упущены. Вот коды моих компонентов:

import '../common/template/dependencies'
import React from 'react'    

import Routes from './Routes'

export default props => (
  <div className='wrapper'>   
    <div className='content-wrapper'>
     <Routes />
     </div>
  </div>
)

Компонент Routes.js, выполняющий маршрутизацию:

import React from 'react'
import {Router, Route , Redirect, hasHistory} from 'react-router'

import Dashboard from '../dashboard/Dashboard'
import BillingCycle from '../billingCycle/BillingCycle'

export default props => (
  <Router history = {hasHistory}>
    <Route path='/' component = {Dashboard} />
    <Route path='/billingCycles' component = {BillingCycle} />
    <Redirect from='*' to='/' />
  </Router>
)

Когда я комментирую эту строку компонента выше, все работает хорошо.

  {/*<Routes />*/}

что такое компонент Dashboard?

sathish kumar 03.03.2019 06:26

Этот компонент имеет только h1: <h1>Dashboard</h1>, потому что мы находимся в начале создания приложения.

claudiopb 03.03.2019 06:27

Вы пытались добавить exact к пути / и поставить его после /billingCycles?

Deryck 03.03.2019 06:32

да. Я попробовал это сейчас, и это не сработало

claudiopb 03.03.2019 06:38

Почему вы не используете react-router-dom? stackoverflow.com/questions/42684809/…

Pranay Aryal 03.03.2019 06:57

Потому что я следую шагам курса. Я попытаюсь изменить его на react-router-dom. Курс немного устарел

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

Ответы 2

Используйте react-router-dom

Измените свой импорт в Route.js следующим образом:

import {BrowserRouter as Router, Route} from 'react-router-dom'

Ответ принят как подходящий
import React from 'react'
import {BrowserRouter as Router, Route, Redirect, Switch} from 'react-router-dom';
import Dashboard from './DashBoard';
import BillingCycle from './BillingCycle'

export default props => (
    <Router>
        <Switch>
            <Route exact path='/' component = {Dashboard}/>
            <Route exact path='/billingCycles' component = {BillingCycle}/>
            <Redirect from='*' to='/'/>
        </Switch>
    </Router>

)

Убедитесь, что ваш код hasHistory доступен в новой версии react-router. Также вы должны использовать react-router-dom. Надеюсь это поможет..

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