简体   繁体   English

React bootstrap 导航栏折叠不起作用

[英]React bootstrap navbar collapse not working

I have used react bootstrap navbar also used react-scroll for smooth navigation.我使用了 react bootstrap navbar 也使用了react-scroll来平滑导航。 It's working fine but navbar is not collapsing when clicking any nav item in the responsive mode.它工作正常,但在响应模式下单击任何导航项时,导航栏不会折叠。

Packages套餐

import React, { Component } from "react";
import { NavLink } from "react-router-dom";
import { Link } from "react-scroll";
import { LinkContainer } from "react-router-bootstrap";
import { Navbar, Container, NavDropdown, Nav, Dropdown } from "react-bootstrap";

Navbar导航栏

<Navbar
    sticky="top"
    id="navbar"
    bg="light"
    expand="lg"
    className="navbar navbar-expand-lg navbar-light bg-light"
    collapseOnSelect={true}
>
<Navbar.Toggle aria-controls="basic-navbar-nav" />
    <Navbar.Collapse id="basic-navbar-nav">
        <Nav className="ml-auto">
            <Link
                activeClass="active"
                to="features"
                spy={true}
                smooth={true}
                offset={-70}
                duration={800}
                className="nav-link"
                onClick={this.closeNavbar}
            >
                Features
            </Link>

            <Link
                activeClass="active"
                to="about"
                spy={true}
                smooth={true}
                offset={-70}
                duration={800}
                className="nav-link"
            >
                About
            </Link>
        </Nav>
    </Navbar.Collapse>
</Navbar>

Had the same issue.有同样的问题。 I found that "collapseOnSelect" works if we add "eventKey" for Nav.Link item我发现如果我们为 Nav.Link 项目添加“eventKey”,“collapseOnSelect”就会起作用

Example:例子:

import { Link } from 'react-router-dom';
import { Nav, Navbar} from 'react-bootstrap';

 <Navbar collapseOnSelect  expand="lg">
      <Navbar.Toggle />
      <Navbar.Collapse>
        <Nav className="mr-auto d-block">
          <Nav.Item>
            <Nav.Link eventKey="1" as={Link} to="/Home">
              Home
            </Nav.Link>
          </Nav.Item>
          <Nav.Item>
             <Nav.Link eventKey="2" as={Link} to="/Contant">
              Page Contant
            </Nav.Link>
          </Nav.Item>
        </Nav>
      </Navbar.Collapse>
    </Navbar>

I had the same issue and resolved it by putting Bootstrap's Nav.Link back in. Here's how it would work based on your code :我遇到了同样的问题,并通过将 Bootstrap 的 Nav.Link 放回去解决了它。这是基于您的代码的工作方式:

<Navbar sticky="top" id="navbar"className="navbar" collapseOnSelect bg="light expand="lg">
 <Navbar.Toggle aria-controls="basic-navbar-nav"/>
  <Navbar.Collapse id="basic-navbar-nav">
  <Nav className="ml-auto">
   <Nav.Link>
    <Link
      activeClass="active"
      to="features"
      spy={true}
      smooth={true}
      offset={-70}
      duration={800}
      className="nav-link"
      >
      Features
    </Link>
   </Nav.Link>
  </Nav>
 </Navbar.Collapse>
</Navbar>

it's know issue in React Bootstrap that when we clicked on menu item it will not hide the menu automatically, below mentioned code help you to achieve the same. React Bootstrap 中的一个已知问题是,当我们单击菜单项时,它不会自动隐藏菜单,下面提到的代码可帮助您实现相同的目标。

An easy workaround that doesn't require jQuery:一个不需要 jQuery 的简单解决方法:

<DropdownButton title={buttonTitle} onSelect={() => null}>

or if you're still using ES5:或者如果您仍在使用 ES5:

<DropdownButton title={buttonTitle} onSelect={function() {}}>

It doesn't seem to matter what the onSelect callback returns. onSelect回调返回什么似乎并不重要。

just use eventKey="2" inside <Nav.link/> .只需在<Nav.link/>使用eventKey="2" It will works fine for react js .它适用于react js

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM