Bootstrap 下拉菜单在 React 中不起作用

Bootstrap Dropdown is not working in React

我在 bootstrap 下拉菜单中添加了一个 React 下拉按钮,但它不起作用,显示为普通按钮。你能给我一个解决方案吗?

<div className="dropdown">
    <button className="btn btn-secondary 
                 dropdown-toggle" 
                 type="button" 
                 id="dropdownMenuButton"
                 data-toggle="dropdown"
                 aria-haspopup="true" 
                 aria-expanded="false">
                 Dropdown button
    </button>
            <div className="dropdown-menu" aria-labelledby="dropdownMenuButton">
                <a className="dropdown-item" href="#">Action</a>
                <a className="dropdown-item" href="#">Another action</a>
                <a className="dropdown-item" href="#">Something else here</a>
            </div>
</div>

输出的是一个像这样的普通按钮。

如果没有 popper.jsjquery.js,下拉菜单将无法工作。

所以请使用 npm install popper.js jquery --save 在您的系统中安装 popper.jsjquery.js,并且不要忘记包含它。

有 CDN

https://stackblitz.com/edit/create-react-class-m3qfxu?file=index.html

使用 NPM

https://stackblitz.com/edit/create-react-class-xvsthx?file=index.js

如果有人不想安装其他依赖项,他们可以使用 react useState hook 使其工作。

import React, { useState } from 'react';

export default function DropCard() {
  const [dropdown, setDropdown] = useState(false);
  const toggleOpen = () => setDropdown(!dropdown);

 return (
    <div className="dropdown">
        <button onClick={toggleOpen}>
          Dropdown
        </button>
        <div
          className={`dropdown-menu ${dropdown ? 'show' : ''}`}
          aria-labelledby="dropdownMenuButton"
          >
            <a className="dropdown-item" href="#">
              Delete
            </a>
            <a className="dropdown-item" href="#">
              Pin to your Profile
            </a>
         </div>
     </div>
  );
}

确保您已正确导入 bootstrap js

npm install --save bootstrap 然后 import "bootstrap/dist/js/bootstrap.min.js";

这对我有用。

解决这个问题需要通过rootCloseEvent,例如

<DropdownButton                          
    title="Download"
    rootCloseEvent="mousedown"
  >
    <MenuItem
      onClick={}
    >
      PDF
    </MenuItem>
    <MenuItem
      onClick={}
    >
      CSV
</MenuItem>
<DropdownButton/>