@ozerovlife

Почему при перезагрузке страницы не грузит контент?

Всем привет. На странице "Информация" у меня есть несколько пунктов меню и контентная часть.
При клике по меню меняеться текст внутри контент-контейнера, но при перезагрузке страницы, роутер как будто теряет контекст и страница уже загружаеться без меню и контента. В чем может быть дело?
https://codesandbox.io/s/reverent-violet-r4q6y?fil...
5f12dc5e6ef8d425698684.png

После перезагрузки страницы
5f12dc70884d2810436675.png

Info.js^
import React from "react";
import './Info.css';

import InfoLaw from "./InfoLaw/InfoLaw";
import InfoNbu from "./InfoNbu/InfoNbu";
import InfoRialto from "./InfoRialto/InfoRialto";
import InfoMarket from "./InfoMarket/InfoMarket";
import InfoRates from "./InfoRates/InfoRates";

import {Switch, BrowserRouter as Router , Route, NavLink} from "react-router-dom";


class Info extends React.Component {
    render() {
        return (
            <Router>
                <div className='wrapper-info'>
                    <div className='info-block'>
                        <div className='info-menu'>
                            <nav>
                                <ul className='info-menu-list'>
                                    <li className='info-menu-item'>
                                        <NavLink to="/info">Валютный курс</NavLink>
                                    </li>
                                    <li className='info-menu-item'>
                                        <NavLink to="/info/market">Валютный рынок</NavLink>
                                    </li>
                                    <li className='info-menu-item'>
                                        <NavLink to="/rialto">Валютная биржа</NavLink>
                                    </li>
                                    <li className='info-menu-item'>
                                        <NavLink to="/nbu">НБУ</NavLink>
                                    </li>
                                    <li className='info-menu-item'>
                                        <NavLink to="/law">Закон</NavLink>
                                    </li>
                                </ul>
                            </nav>
                        </div>
                        <div className='info-content'>
                            <Switch>
                                <Route exact path='/info' component={InfoRates}/>
                                <Route exact path='/info/market' component={InfoMarket}/>
                                <Route exact path='/rialto' component={InfoRialto}/>
                                <Route exact path='/nbu' component={InfoNbu}/>
                                <Route exact path='/law' component={InfoLaw}/>
                            </Switch>
                        </div>
                    </div>
                </div>
            </Router>
        )
    }
}

export default Info;


Демонстрация на видео: https://youtu.be/lVvufWjauL4
  • Вопрос задан
  • 827 просмотров
Решения вопроса 1
devellopah
@devellopah
в файле маршрутизации (обычно это App.js, если поднимал через create-react-app) добавляешь
<Route path='/info' component={Info}/>

в компоненте <Info /> меняешь куски

...
    <nav>
      <ul className='info-menu-list'>
        <li className='info-menu-item'>
          <NavLink to={this.props.match.path}>Валютный курс</NavLink>
        </li>
        <li className='info-menu-item'>
          <NavLink to={this.props.match.path + '/market'}>Валютный рынок</NavLink>
        </li>
        <li className='info-menu-item'>
          <NavLink to={this.props.match.path + '/rialto'}>Валютная биржа</NavLink>
        </li>
        <li className='info-menu-item'>
          <NavLink to={this.props.match.path + '/nbu'}>НБУ</NavLink>
        </li>
        <li className='info-menu-item'>
          <NavLink to={this.props.match.path + '/law'}>Закон</NavLink>
        </li>
      </ul>
    </nav>
...


...
<Switch>
  <Route exact path={this.props.match.path + '/market'} component={InfoMarket} />
  <Route exact path={this.props.match.path + '/rialto'} component={InfoRialto} />
  <Route exact path={this.props.match.path + '/nbu'} component={InfoNbu} />
  <Route exact path={this.props.match.path + '/law'} component={InfoLaw} />
  <Route exact path={this.props.match.path} component={InfoRates} />
</Switch>
...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы