首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React-Bootstrap下拉菜单未扩展

React-Bootstrap下拉菜单未扩展
EN

Stack Overflow用户
提问于 2017-11-19 00:45:23
回答 5查看 8.8K关注 0票数 10

我刚刚开始在我的站点中实现React-Bootstrap,但是单击它时NavDropdown组件不会展开。

我做了什么:npm install -s react-bootstrap

添加css到html:<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/latest/css/bootstrap.min.css">

已创建我的Navigation组件:

代码语言:javascript
复制
import React from 'react';
import PropTypes from 'prop-types';
import NavbarHeader from 'react-bootstrap/lib/NavbarHeader';
import NavItem from 'react-bootstrap/lib/NavItem';
import Nav from 'react-bootstrap/lib/Nav';
import Navbar from 'react-bootstrap/lib/Navbar';
import NavbarCollapse from 'react-bootstrap/lib/NavbarCollapse';
import NavbarBrand from 'react-bootstrap/lib/NavbarBrand';
import NavbarToggle from 'react-bootstrap/lib/NavbarToggle';
import NavDropdown from 'react-bootstrap/lib/NavDropdown';
import MenuItem from 'react-bootstrap/lib/MenuItem';

export class Header extends React.PureComponent {
  render() {
   return (
    <Navbar inverse collapseOnSelect>
    <NavbarHeader>
      <NavbarBrand>
        <a href="#">React-Bootstrap</a>
      </NavbarBrand>
      <NavbarToggle />
    </NavbarHeader>
    <NavbarCollapse>
      <Nav>
        <NavItem eventKey={1} href="#">Link</NavItem>
        <NavItem eventKey={2} href="#">Link</NavItem>
        <NavDropdown eventKey={3} title="Dropdown" id="basic-nav-dropdown">
          <MenuItem eventKey={3.1}>Action</MenuItem>
          <MenuItem eventKey={3.2}>Another action</MenuItem>
          <MenuItem eventKey={3.3}>Something else here</MenuItem>
          <MenuItem divider />
          <MenuItem eventKey={3.3}>Separated link</MenuItem>
        </NavDropdown>
      </Nav>
      <Nav pullRight>
        <NavItem eventKey={1} href="#">Link Right</NavItem>
        <NavItem eventKey={2} href="#">Link Right</NavItem>
      </Nav>
        </NavbarCollapse>
      </Navbar>
    );
  }
}

export default Header;

下拉列表将不会展开:Gyazo Screenshare - Dropdown not expanding在检查elementsGyazo Screenshare - rerendering in dom时,正在注册单击

关于这个错误是如何以及为什么发生的,你有什么想法吗?

编辑:我目前在React 16上运行

编辑2:这是Github代码库。

https://github.com/Hespen/PWA-bootstrap npm install && npm run development -> localhost:1337

EN

回答 5

Stack Overflow用户

发布于 2017-11-27 22:16:11

这很可能是react-bootstrap中的一个错误。菜单实际上是立即显示和隐藏的。如果你检查NavDropdown.js的代码,你会看到它包含了<Dropdown.Menu />作为一个容器,它使用<RootCloseWrapper />来处理菜单的关闭。如果您在DropdownMenu.jsrender()方法中设置了一个断点,您将看到在第一次呈现此<RootCloseWrapper>时,它被禁用了。当您单击下拉菜单项时,<RootCloseWrapper>将呈现为已启用,并为单击事件添加事件侦听器以关闭菜单。

问题是,相同的事件随后会立即在RootCloseWrapper中处理,并且rootClose会被触发,从而立即关闭菜单。

检查它是否正常工作

如果您单击其他链接,然后使用Tab键聚焦下拉菜单项,则可以使用空格键或向下箭头键扩展菜单。

票数 5
EN

Stack Overflow用户

发布于 2017-11-24 23:08:30

一定要安装react-dom $ npm install --save react react-dom并导入"render",这样就可以让它正常工作了。根据React-Bootstrap Getting Started page的要求,这是一个要求

我目前正在我的一个项目中使用React-Bootstram,以下是对我有效的导入:

代码语言:javascript
复制
import React, { Component } from 'react';
import ReactDOM, {render} from 'react-dom';
import PropTypes from 'prop-types';
import { Nav, Navbar, NavItem, MenuItem, NavDropdown, Modal, Jumbotron } from 'react-bootstrap';

我希望这能帮到你。

票数 2
EN

Stack Overflow用户

发布于 2017-11-27 17:22:14

您的代码正在使用这些依赖项版本的create-react-app,也许可以尝试更新:

代码语言:javascript
复制
"dependencies": {
    "react": "^16.1.1",
    "react-bootstrap": "^0.31.5",
    "react-dom": "^16.1.1"
  }

使用与cdn链接相同的css。

顺便说一句,避免两次导出组件(仅对单个组件文件使用导出默认值)

编辑:你对2个菜单项道具使用了相同的Event键,也许你可以试着改变一下。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47368523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档