J'ai une barre latérale qui est fixée avec des icônes pour naviguer vers différentes pages. lorsque vous cliquez sur les icônes, un menu secondaire est déplacé. Actuellement, lorsqu'une icône est cliquée, le menu est déplacé, mais lorsqu'une autre icône est sélectionnée, le menu revient au lieu de simplement basculer ou rester éteint. Le fait de cliquer sur la barre latérale et le menu ne ferme pas non plus le menu coulissant. Je ne suis pas sûr de savoir comment cela fonctionnera. Toute suggestion serait appréciée.reactjs sidemenu fonctionnalité
Parent:
export default class Parent extends Component {
constructor() {
super();
this.state = {
menuOpen: false,
};
}
toggleMenuOpen =() => {
this.setState({ menuOpen: !this.state.menuOpen });
}
render() {
return (
<div>
<ul>
<NavIcons onClick={this.toggleMenuOpen} />
<PushMenu menuOpen={this.state.menuOpen} />
</ul>
</div>
);
}
}
icônes sur la barre latérale:
export default class NavIcons extends Component {
render() {
const { onClick } = this.props;
return (
<div>
{
topNavListItems.map((topItem) => {
return (
<li className='link-wrapper' key={topItem.get('id')} onClick={onClick}>
<NavLink
activeClassName='selected'
className='Icon-list-link'
to={topItem.get('route')}
>
<Icon name={topItem.get('name')} />
</NavLink>
</li>
);
})
}
</div>
);
}
}
NavIcons.propTypes = {
onClick: PropTypes.func,
};
diapositive menu:
export default class PushMenu extends Component {
render() {
const { menuOpen } = this.props;
const menuClass = menuOpen ? 'menu open' : 'menu';
return (
<div className={menuClass}>
<Header>Content</Header>
<Linebreak />
<List>
{
labelMenuItems.map((menuItem) => {
return (
<li key={menuItem.get('id')}>{menuItem.get('name')}
<List>
{
menuItem.get('nestedItems').map((childMenuItem) => {
return (
<li key={childMenuItem.get('id')}>{childMenuItem.get('name')}</li>
);
})
}
</List>
</li>
);
})
}
</List>
</div>
);
}
}
PushMenu.propTypes = {
menuOpen: PropTypes.bool,
};
Veuillez inclure les autres composants que vous mentionnez dans votre code afin que nous puissions tester et trouver une solution pour vous. –