Css 悬停时显示子菜单时出现问题
我正在使用reactstrap制作一个reactjs应用程序,其中我制作了一个下拉菜单,其中包含子菜单 我试图实现将子菜单悬停在下拉列表上显示的结果,如果有Css 悬停时显示子菜单时出现问题,css,reactjs,twitter-bootstrap,reactstrap,megamenu,Css,Reactjs,Twitter Bootstrap,Reactstrap,Megamenu,我正在使用reactstrap制作一个reactjs应用程序,其中我制作了一个下拉菜单,其中包含子菜单 我试图实现将子菜单悬停在下拉列表上显示的结果,如果有n个下拉列表,则需要显示与悬停项目相关的子菜单 已尝试的代码: <Dropdown className="d-inline-block" onMouseOver={this.onMouseEnter} onMouseLeave={this.onMouseLeave} isOpen={this.state.dropdown
n
个下拉列表,则需要显示与悬停项目相关的子菜单
已尝试的代码:
<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>
下拉列表1
子菜单1
子菜单1.1
下拉列表2
子菜单2
子菜单2.1
子菜单2.2
下拉列表3
子菜单3
子菜单3.1
子菜单3.2
子菜单3.3
预期结果:
在上面给出的链接中,您可以看到水平菜单,悬停时将显示各自的子菜单,我需要实现相同的行为
组件中Array.prototype.map
简化设置处理程序从“React”导入React;
进口{
下拉列表,
下拉开关,
下拉菜单,
下拉项
}从“反应带”;
导出默认类示例扩展了React.Component{
建造师(道具){
超级(道具);
this.onMouseEnter=this.onMouseEnter.bind(this);
this.onMouseLeave=this.onMouseLeave.bind(this);
此.state={
下拉打开:-1
};
this.toggle=this.toggle.bind(this);
这是菜单=[
{
标题:“浴室”,
子菜单:[{title:“马桶”},{title:“马桶座”}]
},
{
标题:“厨房”,
子菜单:[{标题:“农舍水槽”},{标题:“铸铁水槽”}]
}
];
}
OnMouseCenter(当前){
this.setState({dropdownOpen:current});
}
请假{
this.setState({dropdownOpen:-1});
}
切换(){}
render(){
返回(
{this.menus.map((menu,i)=>(
这个.onmouseinter(i)}
onMouseLeave={this.onMouseLeave}
isOpen={this.state.dropdownOpen===i}
toggle={this.toggle}
>
{menu.title}
{menu.submenus.map((子菜单,i)=>(
{子菜单.标题}
))}
))}
);
}
}
stackblitz:您能在stackblitz中创建任何与此相关的示例吗?感谢您的帮助,我如何在我的实际应用程序中实现相同的结果,其中下拉名称将与问题中提供的链接完全相同。。如果你帮我像那样显示菜单和子菜单,我将非常感谢你的帮助,因为我是reactjs新手,我无法理解如何处理它。。我真正的应用程序菜单只会像那个链接一样,我也在尝试实现我编辑过post和stackblitz的..@TestUser。我认为您可以更改
菜单
以获得所需内容。感谢您的帮助,但为什么默认情况下第一个下拉列表是打开的。。应该仅在悬停时打开它。@TestUser状态的默认值。dropdownOpen
不正确。我已经修好了。
import React from "react";
import {
Dropdown,
DropdownToggle,
DropdownMenu,
DropdownItem
} from "reactstrap";
export default class Example extends React.Component {
constructor(props) {
super(props);
this.onMouseEnter = this.onMouseEnter.bind(this);
this.onMouseLeave = this.onMouseLeave.bind(this);
this.state = {
dropdownOpen: -1
};
this.toggle = this.toggle.bind(this);
this.menus = [
{
title: "Bathroom",
submenus: [{ title: "Toilets" }, { title: "Toilet seats" }]
},
{
title: "Kitchen",
submenus: [{ title: "Farmhouse Sinks" }, { title: "Cast Iron Sinks" }]
}
];
}
onMouseEnter(current) {
this.setState({ dropdownOpen: current });
}
onMouseLeave() {
this.setState({ dropdownOpen: -1 });
}
toggle() {}
render() {
return (
<div>
{this.menus.map((menu, i) => (
<Dropdown
className="d-inline-block"
onMouseOver={e => this.onMouseEnter(i)}
onMouseLeave={this.onMouseLeave}
isOpen={this.state.dropdownOpen === i}
toggle={this.toggle}
>
<DropdownToggle caret>{menu.title}</DropdownToggle>
<DropdownMenu>
{menu.submenus.map((submenu, i) => (
<DropdownItem header>{submenu.title}</DropdownItem>
))}
</DropdownMenu>
</Dropdown>
))}
</div>
);
}
}