내 반응 응용 프로그램에서 사용할 간단한 드롭 다운 메뉴를 만들었습니다. 드롭 다운 메뉴가 한 곳에서만 나타나고 원하는 곳이 아닌 곳에서 문제가 발생합니다.드롭 다운 메뉴는 여러 장소에서 사용할 수 없습니다.
예를 들어 3 개의 구성 요소가 있고 3 개의 구성 요소 모두에 내 드롭 다운 메뉴가 포함되어 있다고 가정합니다. 두 번째 또는 세 번째 구성 요소의 드롭 다운 아이콘을 클릭하면 첫 번째 구성 요소의 드롭 다운 메뉴가 항상 열립니다. 이 문제를 어떻게 해결할 수 있습니까?
드롭 다운 메뉴는
class DropDown extends Component {
constructor(props) {
super(props);
this.myFunction = this.myFunction.bind(this);
};
myFunction() {
document.getElementById("myDropdown").classList.toggle("show");
}
render() {
window.onclick = function (event) {
if (!event.target.matches('.user_settings_icon')) {
var dropdowns = document.getElementsByClassName("dropdown-content");
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
}
return (
<div className="dropdown small_font">
{/*<img src={settings} onClick={this.myFunction} className="user_settings_icon"></img>*/}
<i className="fa fa-cog user_settings_icon" style={{marginTop: '6px'}} onClick={this.myFunction}
aria-hidden="true"></i>
<div id="myDropdown" className="dropdown-content">
{/*<div id="myDropdown" className={this.props.actionDropDownCSS}>*/}
<a className="dropdown_item"><i className="fa fa-trash-o margin_right10px" aria-hidden="true"></i>Delete</a>
<a className="dropdown_item"><i className="fa fa-flag-o margin_right10px" aria-hidden="true"></i>Report</a>
<a className="dropdown_item"><i className="fa fa-minus-square-o margin_right10px"
aria-hidden="true"></i>Unfriend</a>
<a className="dropdown_item"><i className="fa fa-sign-out margin_right10px" aria-hidden="true"></i>Leave
group</a>
</div>
</div>
);
}
}
export default DropDown;
사례를 보여 주실 수 있습니까? – CraZyDroiD
첨부 된 예보기 –