Я создал одностраничное приложение, использующее реагирующий маршрутизатор, но теперь я хочу разместить ссылки на маршрутизатор в боковой панели, которая переходит слева.
Я пытался в течение нескольких днейно независимо от того, что я делаю, ссылки на маршрут продолжают появляться либо сами по себе, а не в компоненте боковой панели, либо они хотят визуализироваться в компоненте боковой панели после нажатия на них.
Компонент боковой панели:
import React, {Component} from 'react';
import './SideDrawer.css';
import {BrowserRouter, Route, Link} from 'react-router-dom';
const routes = [
{
path: '/',
exact: true,
sidebar: () => <div></div>,
main: () => <p>Home</p>
},
{
path: '/dogs',
sidebar: () => <div>Dogs</div>,
main: () => <p>Dogs</p>
}
];
const sideDrawer = props => {
let drawerClasses = 'side-drawer'
if (props.show) {
drawerClasses='side-drawer open'
}
return(
<div className='Main'>
<nav className={drawerClasses}>
<BrowserRouter>
<div style={{display: 'flex'}}>
<div className='navBar'>
<ul style={{listStyleType: 'none'}}>
<li><Link to='/'>Home</Link></li>
<li><Link to='/dogs'>Dogs</Link></li>
</ul>
</div>
<div style={{flex:1, padding:'0px'}}>
{routes.map((route) => (
<Route
key={route.path}
path={route.path}
exact={route.exact}
component={route.main}
/>
))}
</div>
</div>
</BrowserRouter>
</nav>
</div>
);
};
export default sideDrawer;
Компонент приложения:
class App extends Component {
state ={
sideDrawerOpen: false
};
drawerToggleClickHandler = () => {
this.setState((prevState) => {
return {sideDrawerOpen: !prevState.sideDrawerOpen};
});
};
backdropClickHandler = () => {
this.setState({sideDrawerOpen: false});
};
render() {
let backDrop;
if (this.state.sideDrawerOpen) {
backDrop = <Backdrop click={this.backdropClickHandler}/>;
}
return (
<div style={{height:'100%'}} className="App">
<Toolbar drawerClickHandler ={this.drawerToggleClickHandler}/>
<SideDrawer show={this.state.sideDrawerOpen}/>
{backDrop}
<main style={{marginTop:'64px'}}>
'place lists here'
</main>
</div>
);
}
}
export default App
Я надеялся, что скользящая боковая панель отобразит ссылки на маршрутизатор, и после нажатия они отобразят содержимое ссылок в пространстве рядом с / за скользящейбоковая панель.Но вместо этого он также хочет отобразить ссылки внутри боковой панели.