React bootstrap Navbarもスムーズなナビゲーション用の_react-scroll
_を使用しました。応答モードで任意のNAV項目をクリックすると、うまく機能していますが、Navbarは折りたたまれていません。
パッケージ
_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>
_
同じ問題がありました。 nav.link itemに "eventkey"を追加すると "collapseSonelect"が機能することがわかりました
例:
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>
_
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>
_
React Bootstrapでは、メニュー項目をクリックすると自動的にメニューを非表示にすると、以下のコードが同じことを実現するのに役立ちます。
JQueryを必要としない簡単な回避策:
_<DropdownButton title={buttonTitle} onSelect={() => null}>
_
それでもES5を使用している場合:
_<DropdownButton title={buttonTitle} onSelect={function() {}}>
_
onSelect
コールバックが返されたものが問題になるようです。