javascript - 在悬停reactjs上显示菜单
问题描述
在反应应用程序中,我使用 reactstrap css 框架来制作下拉菜单以列出下拉菜单。
Example.Js
<Dropdown
className="d-inline-block"
onMouseOver={this.onMouseEnter}
onMouseLeave={this.onMouseLeave}
isOpen={this.state.dropdownOpen}
toggle={this.toggle}
>
<DropdownToggle caret>Dropdown1</DropdownToggle>
<DropdownMenu>
<DropdownItem header>Submenu 1</DropdownItem>
<DropdownItem>Submenu 1.1</DropdownItem>
</DropdownMenu>
<DropdownToggle caret>Dropdown2</DropdownToggle>
<DropdownMenu>
<DropdownItem header>Submenu 2</DropdownItem>
<DropdownItem>Submenu 2.1</DropdownItem>
<DropdownItem>Submenu 2.2</DropdownItem>
</DropdownMenu>
<br /><br />
<DropdownToggle caret>Dropdown3</DropdownToggle>
<DropdownMenu>
<DropdownItem header>Submenu 3</DropdownItem>
<DropdownItem>Submenu 3.1</DropdownItem>
<DropdownItem>Submenu 3.2</DropdownItem>
<DropdownItem>Submenu 3.3</DropdownItem>
</DropdownMenu>
</Dropdown>
在这里,我在和 等事件setState
中设置了状态。dropDownOpen
onMouseOver
onMouseLeave
问题是悬停在单个下拉菜单上,每个下拉菜单都会打开。
请帮助我使悬停下拉菜单仅列出悬停菜单,而不是一次全部列出。
注意:在我的实际应用程序中,这些下拉菜单将是动态的,所以我不能制作任何硬编码状态,如、、、...dropDown1
等。dropDown2
dropDown3
它可能有任意n
数量的下拉菜单。所以请给我解决方案以考虑动态菜单。
解决方案
基本上每个下拉菜单都需要在自己的Dropdown
复合组件中,具有自己的状态和处理程序。我分叉并更新了你的演示,希望能给你正确的想法。
<div>
<Dropdown
className="d-inline-block"
onMouseOver={this.onMouseEnter}
onMouseLeave={this.onMouseLeave}
isOpen={this.state.dropdownOpen1}
toggle={this.toggle1}
>
<DropdownToggle caret>Dropdown1</DropdownToggle>
<DropdownMenu>
<DropdownItem header>Submenu 1</DropdownItem>
<DropdownItem>Submenu 1.1</DropdownItem>
</DropdownMenu>
</Dropdown>
<Dropdown
className="d-inline-block"
// onMouseOver={this.onMouseEnter}
// onMouseLeave={this.onMouseLeave}
isOpen={this.state.dropdownOpen2}
toggle={this.toggle2}
>
<DropdownToggle caret>Dropdown2</DropdownToggle>
<DropdownMenu>
<DropdownItem header>Submenu 2</DropdownItem>
<DropdownItem>Submenu 2.1</DropdownItem>
<DropdownItem>Submenu 2.2</DropdownItem>
</DropdownMenu>
<br /><br />
</Dropdown>
<Dropdown
className="d-inline-block"
// onMouseOver={this.onMouseEnter}
// onMouseLeave={this.onMouseLeave}
isOpen={this.state.dropdownOpen3}
toggle={this.toggle3}
>
<DropdownToggle caret>Dropdown3</DropdownToggle>
<DropdownMenu>
<DropdownItem header>Submenu 3</DropdownItem>
<DropdownItem>Submenu 3.1</DropdownItem>
<DropdownItem>Submenu 3.2</DropdownItem>
<DropdownItem>Submenu 3.3</DropdownItem>
</DropdownMenu>
</Dropdown>
</div>
https://stackblitz.com/edit/reactstrap-v6-2dnzex?file=Example.js
推荐阅读
- tensorflow - 张量具有 NaN 值
- vue.js - 如何处理 Nativescript Vue 应用程序上的导航?
- javascript - Javascript。为什么调用方法时不用括号?
- tensorflow - tf.py_function 和 tf.function 在用途上有什么区别?
- javascript - ComponentDidMount 在重定向回调之前被触发
- scala - 如何更新数据框 Spark Scala 单元格中的值
- json - 在 JSON 示例表单 Real World Haskell 中使用类型类
- python - 通过 Ubuntu 的 apt-get 在 Dockerfile 中使用 apt-get 安装 python-pip
- java - OpenJDK 14.0.1 给出“switch 表达式不涵盖所有可能的输入值”
- java - 使用默认值创建 ConcurrentHashMap