ReactJS — проблема с react-router-dom

#reactjs #react-router-dom

#reactjs #react-router-dom

Вопрос:

У меня есть <Routes> компонент, который отображает только <Dashboard> компонент. То же самое не происходит, когда я пытаюсь извлечь <BillingCycle> компонент. Содержимое циклов выставления счетов не отображается, когда я набираю URL-адрес в браузере, который может вызвать страницу BillingCycle. Содержимое панели мониторинга продолжает отображаться. В чем я ошибаюсь? Спасибо.

импортируйте ‘../common/template/dependencies’ импортируйте React из ‘react’

вот родительский компонент, который импортирует компонент Routes.

 import Routes from './Routes'

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

вот компонент панели мониторинга, который успешно отображается в этих URL: http://localhost:8080 и http://localhost:8080 /#/

 import React from 'react'

export default props  => (
  <div>
    <h1>Dashboard</h1>
  </div>
)
  

вот компонент billingCycle, который не отображается, когда я набираю его URL:
http://localhost:8080/#/billingCycles

 import React from 'react'

export default props => {

  return (
   <h1>Ciclo de pagamentos</h1>
  )
}
  

Вот компонент Routes:

 import React from 'react'
import { BrowserRouter as Router, Route, Redirect, Switch } from 'react-router-dom';

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

export default props => (
  <Router>
    <Switch>      

      <Route exact path='#/billingCycles' component={BillingCycle} />
      <Route exact path='/' component={Dashboard} />
      <Redirect from='*' to='/' />
    </Switch>
  </Router>
)
  

Комментарии:

1. Для того, чтобы сделать это, вы должны сделать это с помощью рендеринга на стороне сервера, который также называется isomorphic .

Ответ №1:

Если вы хотите использовать хэш в URL, вы должны использовать HashRouter . И вы не должны добавлять хэши к маршрутам:

 <Route exact path='/billingCycles' component={BillingCycle} />
  

Комментарии:

1. что это? HashRouter? какая-то зависимость? не могли бы вы, пожалуйста, объяснить мне, как мне это реализовать

2. Описание и примеры приведены в официальной документации reacttraining.com/react-router/web/api/HashRouter

3. Я выполнил тест, заменив / #/billingCycles на /billingCycles, и это не сработало, появилось сообщение об ошибке: не удается ПОЛУЧИТЬ / billingCycles по этому URL localhost: 8080/billingCycles

4. Я привел для вас небольшой пример: codesandbox.io/s/j22067pw03?fontsize=14 . Вы можете изменить URL на /#/billingCycles, и маршрут изменится.