Bootstrap Dropdown 在 React 中不起作用

IT技术 reactjs bootstrap-4 dropdown
2021-05-01 11:17:16

我在 bootstrap Dropdowns 中包含了一个用于 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>

输出是一个像这样的普通按钮。 在此处输入图片说明

4个回答

没有popper.js和 ,下拉菜单不起作用jquery.js

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

有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 useStatehook使其工作

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/>