Как я могу сделать при нажатии на конкретный пункт меню для перехода к компоненту в https://codepen.io/mrhamburger/pen/XzjXGb.
Я использовал подобный пример, но я мало что изменил, потому что я использую ссылку, импортированную из NextJs, но проблемаСсылка и активный стиль не связаны, моя проблема в том, что у меня есть menuItems как состояние, и я хочу, чтобы активное состояние выделило конкретную активную часть дизайна (menu-item - active), когда я нажимаю на блок или элемент div, содержащийссылка.
import React, { Component } from 'react';
import Link from 'next/link';
// import MenuItem from './MenuItem';
import '../style.scss';
class Sidebar extends React.Component {
constructor(props) {
super(props)
this.state = {
activeItem: '',
activeItemPosition: 0,
activeItemColor: '',
menuItems: [
{ text: 'ComponentA' },
{ text: 'ComponentB' },
{ text: 'ComponentC' },
{ text: 'ComponentD' },
{ text: 'ComponentE' }
],
}
this.handleClick = this.handleClick.bind(this)
}
handleClick(activeItem) {
return e => {
e.preventDefault()
this.setState({
activeItem,
activeItemPosition: document.getElementById(activeItem).offsetTop,
activeItemColor: window.getComputedStyle(document.getElementById(activeItem)).getPropertyValue('background-color'),
})
}
}
render() {
const menuItems = this.state.menuItems.map(item => <MenuItem item={ item } handleClick={ this.handleClick }/>)
return (
<div className='menu-container'>
<span className='menu-item--active' style={{ top: this.state.activeItemPosition, backgroundColor: this.state.activeItemColor }} />
<div id="ComponentA" className="menu-item" onClick={ this.handleClick('ComponentA') } >
<Link href="/ComponentA" >
ComponentA
</Link>
</div>
<div id="ComponentB" className="menu-item" onClick={ this.handleClick('ComponentB') }>
<Link href="/ComponentB">
ComponentB
</Link></div>
<div id="ComponentC" className="menu-item" onClick={ this.handleClick('ComponentC') } >
<Link href="/ComponentC">
ComponentC
</Link>
</div>
<div id="ComponentD" className="menu-item" onClick={ this.handleClick('ComponentD') }>
<Link href="/ComponentD">
ComponentD
</Link></div>
<div id="ComponentE" className="menu-item" onClick={ this.handleClick('ComponentE') } >
<Link href="/ComponentE">
ComponentE
</Link>
</div>
{/* { menuItems } */}
</div>
)
}
}
function MenuItem(props) {
return (
<div>
</div>
)
}
export default Sidebar;
Итак, моя проблема в том, что когда я нажимаю на любой элемент в меню, если я щелкаю по тексту, он показывает компонент, но активный по-прежнему не выделяется как активный элемент, пока я не нажмусам элемент без ссылки или текста.
Пожалуйста, помогите, я хочу иметь возможность щелкнуть любой элемент, чтобы он оставался выделенным как активный стиль и отображал нужный компонент.
Заранее спасибо.