【发布时间】:2019-11-08 03:04:59
【问题描述】:
我设法让按钮激活一个下拉菜单,当您单击关闭时会消失,但问题是当您单击任何按钮时,所有下拉菜单都会出现。似乎当我尝试设置一个按钮的状态时,它会设置所有按钮的状态。我希望每个按钮的状态都有一个为真或假的 displayMenu 变量。单击按钮时,应将其 displayMenu 状态更改为 true,单击关闭时更改为 false。我在这里做错了什么?
import React, { Component } from 'react';
import { Link } from 'react-router-dom';
import './NavBar.css';
import './Body.css'
class NavBar extends Component {
state = {
displayMenu: false
}
showDM = () => {
const displayMenu = true;
this.setState({ displayMenu }, () => {
document.addEventListener('click', this.hideDM);
//document.getElementById("ddc").classList.toggle('show');
});
}
hideDM = (ev) => {
this.setState({ displayMenu: false }, () => {
document.removeEventListener('click', this.hideDM)
//document.getElementsByClassName("dropdown-content").classList.remove('show');
});
}
render() {
return (
<header>
<div className="navbar">
<div className="dropdown">
<button onClick={this.showDM} className="dropbtn">About
<i className="fa fa-caret-down"></i>
</button>
{ this.state.displayMenu ? (
<div className="dropdown-content" id="ddc">
<a href="#mission"><Link to="/mission">Mission</Link></a>
<a href="#history"><Link to="/history">History</Link></a>
<a href="#alumni"><Link to="/alumni">Alumni</Link></a>
</div>
):
(
null
)
}
</div>
<div className="dropdown">
<button onClick={this.showDM} className="dropbtn">Academics
<i className="fa fa-caret-down"></i>
</button>
{ this.state.displayMenu ? (
<div className="dropdown-content" id="ddc">
<a href="#curriculum"><Link to="/curriculum">Our Curriculum</Link></a>
<a href="#study-abroad"><Link to="/study-abroad">Study Abroad</Link></a>
</div>
):
(
null
)
}
</div>
}
export default NavBar;
【问题讨论】:
标签: javascript html reactjs web