Я работаю с маршрутами React JS и установил react-route-dom
. У меня есть два основных компонента, side-bar.js
и nav.js
. side-bar.js
имеет некоторые компоненты, такие как discussion.js
, friends.js
и т. Д., Которые должны быть загружены в соответствии с указанным URL / указанным путем.
Я указал маршруты в side-bar.js
и <Links to="/path" />
в nav.js
. Когда я нажимаю ссылку на nav.js
, она меняет указанный путь (URL-адрес изменяется), но маршрут остается тем же (показан тот же компонент), так как он должен переключаться между discussion.js
, friends.js
и т. Д. Но с другой стороны, когда я обновляю страницу указанными путями в <Link to="/discussion"/>
, требуемый компонент загружается соответственно. Я не знаю, в чем проблема, что он работает только при обновлении страницы, а не по ссылке.
side-bar.js
код
import React, { Component } from 'react'
import Discussion from './side-bar-components/discussion'
import Friends from './side-bar-components/friends'
import Notifications from './side-bar-components/notifications'
import Settings from './side-bar-components/settings'
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
export class sidebar extends Component {
constructor(props) {
super(props)
this.state = {
}
}
render() {
return (
<div className="sidebar">
<div className="container">
<div className="tab-content">
<Router>
<Switch>
<Route path={'/'} exact component={Discussion}/>
<Route path={'/discussion'} component={Discussion}/>
<Route path={'/friends'} component={Friends}/>
<Route path={'/notifications'} component={Notifications}/>
<Route path={'/settings'} component={Settings}/>
</Switch>
</Router>
</div>
</div>
</div>
)
}
}
export default sidebar
nav.js
код
import React, { Component } from 'react'
import {Link, BrowserRouter} from 'react-router-dom';
export class nav extends Component {
render() {
return (
<nav className="navigation">
<div className="container">
<a href="#nav" className="logo" rel="home"> <img src="dist/img/logo.png" alt="logo" /> </a>
<ul className="nav" role="tablist">
<BrowserRouter>
<li>
<Link to="/discussion">
<i data-eva="message-square" data-eva-animation="pulse"></i>
</Link>
</li>
<li>
<Link to="/friends">
<i data-eva="people" data-eva-animation="pulse"></i>
</Link>
</li>
<li>
<Link to="/notifications">
<i data-eva="bell" data-eva-animation="pulse"></i>
</Link>
</li>
<li>
<Link to="/settings">
<i data-eva="settings" data-eva-animation="pulse"></i>
</Link>
</li>
<li><button type="button" className="btn mode"><i data-eva="bulb" data-eva-animation="pulse"></i></button></li>
<li><button type="button" className="btn"><img src="dist/img/avatars/avatar-male-1.jpg" alt="avatar" /><i data-eva="radio-button-on"></i></button></li>
</BrowserRouter>
</ul>
</div>
</nav>
)
}
}
export default nav
home.js
код (родительский компонент)
import React, { Component } from 'react';
import Nav from './app-components/nav'
import Sidebar from './app-components/sidebar'
import Compose from './app-components/compose'
import Chat from './app-components/chat'
export class home extends Component {
constructor(props) {
super(props)
this.state = {
}
}
render() {
return (
<div className="layout">
<Nav />
<Sidebar />
<Chat />
<Compose />
</div>
)
}
}
export default home