悬停时制作 React Bootstrap NavDropdown 下拉菜单

Posted

技术标签:

【中文标题】悬停时制作 React Bootstrap NavDropdown 下拉菜单【英文标题】:Making a React Bootstrap NavDropdown dropdown when hovered over 【发布时间】:2020-07-15 08:42:51 【问题描述】:

我试图让 React Bootstrap 中的下拉菜单栏在您 悬停 时显示选项。我到处寻找,所有解决方案似乎都已过时且无法正常工作,请告诉我您是否能够解决此问题。

这是我尝试将更改应用到的下拉菜单:

<Navbar>
  <NavDropdown title="Dropdown Menu">
    <NavDropdown.Item href="#action/3.1">Option 1</NavDropdown.Item>
    <NavDropdown.Item href="#action/3.1">Option 2</NavDropdown.Item>
  </NavDropdown>
</Navbar>

这是上面代码的sandbox。

【问题讨论】:

【参考方案1】:

你可以使用showprop

import React,  Component, Fragment, useState  from "react";
import ReactDOM from "react-dom";
import  Navbar, Nav, NavDropdown  from "react-bootstrap";

const Header = props => 
  const [show, setShow] = useState(false);
  return (
    <Navbar>
      <NavDropdown
        title="Dropdown Menu"
        show=show
        onMouseEnter=() => setShow(true)
        onMouseLeave=() => setShow(false)
      >
        <NavDropdown.Item href="#action/3.1">Option 1</NavDropdown.Item>
        <NavDropdown.Item href="#action/3.1">Option 2</NavDropdown.Item>
      </NavDropdown>
    </Navbar>
  );
;

function App() 
  return <Header />;


const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

在这里查看codeSandBox

【讨论】:

【参考方案2】:

CSS 解决方案:您只需在您的 NavDropdown 元素上添加 renderMenuOnMount=true,如下所示:

<NavDropdown title=name id=name renderMenuOnMount=true>
...menu items...
</NavDropdown>

在 CSS 中:

.nav-item.dropdown:hover .dropdown-menu 
    display: block;

【讨论】:

以上是关于悬停时制作 React Bootstrap NavDropdown 下拉菜单的主要内容,如果未能解决你的问题,请参考以下文章

如何在悬停时制作 Bootstrap 的下拉菜单?

Bootstrap 4.1中悬停时的下拉菜单

如何在悬停而不是单击时制作 Twitter Bootstrap 的“拆分按钮下拉菜单”下拉菜单?

在悬停时制作 Twitter Bootstrap 菜单下拉菜单,而不是轻松点击(解决方案)

使用带有 react-bootstrap 的 Nav 组件的 Accordion SideBar 菜单

放大图像同时保持鼠标悬停尺寸的 React 组件 - React + Bootstrap