Javascript ReactJS多级下拉菜单
我正在尝试构建一个多层的ReactJs下拉菜单。我使用以下帖子/代码作为基础:并作为我的ReactJs组件的起点:Javascript ReactJS多级下拉菜单,javascript,html,css,reactjs,Javascript,Html,Css,Reactjs,我正在尝试构建一个多层的ReactJs下拉菜单。我使用以下帖子/代码作为基础:并作为我的ReactJs组件的起点: class DropdownMenu extends Component { static propTypes = { config: PropTypes.array.isRequired }; getMenuItemTitle = (menuItem, index, depthLevel) => { return menuItem.title;
class DropdownMenu extends Component {
static propTypes = {
config: PropTypes.array.isRequired
};
getMenuItemTitle = (menuItem, index, depthLevel) => {
return menuItem.title;
};
getMenuItem = (menuItem, depthLevel, index) => {
let title = this.getMenuItemTitle(menuItem, index, depthLevel);
if (menuItem.submenu && menuItem.submenu.length > 0) {
return (
<li>
{title}
<DropdownMenu config={menuItem.submenu} submenu={true} />
</li>
);
} else {
return <li>{title}</li>;
}
};
render = () => {
let { config } = this.props;
let options = [];
config.map((item, index) => {
options.push(this.getMenuItem(item, 0, index));
});
if (this.props.submenu && this.props.submenu === true)
return <ul>{options}</ul>;
return <ul className="dropdown-menu">{options}</ul>;
};
}
export default DropdownMenu;
最后是我的配置文件:
"navItems": [
{
"title": "Option 1",
"submenu": null
},
{
"title": "Option 2",
"submenu": [
{
"title": "Option 2.1",
"submenu": [
{
"title": "Option 2.1.1",
"submenu": null
},
{
"title": "Option 2.1.2",
"submenu": null
}
]
},
{
"title": "Option 2.2",
"submenu": [
{
"title": "Option 2.2.1",
"submenu": null
},
{
"title": "Option 2.2.2",
"submenu": null
}
]
}
]
}
]
我的菜单乱七八糟,选项比其他选项都多,我肯定我错过了一些简单的东西
如何在真正的多级下拉菜单中打开我的组件?这个问题已经过时了,但为了清晰起见,我添加了一个。 为了让fiddle处理您的代码,我必须删除您的proptype并在ReactJS中使用内部props,请参阅更多内容,然后直接渲染它,而不是导出它 然后我看到菜单有点奇怪,菜单项的宽度没有设置,所以我改变了这一点:
.dropdown-menu li {
display: inline-block;
position: relative;
float: left;
}
.dropdown-menu li a {
display: inline-block;
width: 200px;
line-height: 35px;
text-decoration: none;
}
为此:
.dropdown-menu li {
display: inline-block;
position: relative;
float: left;
width: 200px;
line-height: 35px;
text-decoration: none;
}
但是,我看不到你凌乱的菜单。如果你还有问题,请告诉我。我很快修改了Lagoni的代码,这样它也可以获得并显示子菜单的深度 它从道具中获取,并在每次递归时递增:
<DropdownMenu config={menuItem.submenu} depthLevel={depthLevel+1} submenu={true} />`
`
这样,您可以有效地使用它,例如,根据深度级别设置类。例如,每次加深或增加缩进时,都要对颜色进行渐变
您能创建一个示例,让我们试着调试它吗?
<DropdownMenu config={menuItem.submenu} depthLevel={depthLevel+1} submenu={true} />`