私の反応アプリケーションで使用する簡単なドロップダウンメニューを作成しました。ドロップダウンメニューが1つの場所でのみ起動され、私が必要とする場所ではないという問題に直面しています。ドロップダウンメニューは複数の場所で使用することはできません
たとえば、3つのコンポーネントがあり、3つのコンポーネントすべてにドロップダウンメニューが含まれているとします。第2または第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
添付の例を参照 –