'How can I collapse a Bootstrap React Navbar after clicking on a link?
I have used a Bootstrap React Navbar. When the screen gets small, all the links go into a Navicon. I am trying to close the Navicon after clicking on a link, but cant make it work.
import { useState } from 'react'
import { Navbar, Nav } from 'react-bootstrap'
import { NavLink, Link } from 'react-router-dom'
import './Navigation.css'
import logo from './logo.png'
const Navigation = ({ handleAlert }) => {
const [changeClass, setChangeClass] = useState(false)
document.addEventListener('scroll', (e) => scrollNav(e))
function scrollNav(e) {
const scrollTop = window.pageYOffset
if (scrollTop > 120) setChangeClass(true)
else if (scrollTop < 120) setChangeClass(false)
}
function toggle() {
console.log('???')
}
return (
<Navbar expand="md" className={changeClass ? "navb filled" : "navb"} fixed="top" >
<Link to="/personal-page">
<Navbar.Brand> <img
alt="logo"
src={logo}
width="40"
height="40"
className="d-inline-block align-top"
/>{' '}</Navbar.Brand>
</Link>
<Navbar.Toggle aria-controls="basic-navbar-nav" />
<Navbar.Collapse id="basic-navbar-nav">
<Nav className="ml-auto">
<NavLink to="/about" exact>
<Nav.Link as="span" onClick={() => toggle()}>About & Skills</Nav.Link>
</NavLink>
<NavLink to="/portfolio">
<Nav.Link as="span" onClick={() => toggle()}> Portfolio </Nav.Link>
</NavLink>
</Nav>
</Navbar.Collapse>
</Navbar >
)
}
export default Navigation
any ideas on how to solve this?
Thanks in advance
Solution 1:[1]
please try this:
import { useState } from "react";
import { Container, Navbar, Nav } from "react-bootstrap";
import { Link } from "react-router-dom";
export const AppNavbar = () => {
const [expanded, setExpanded] = useState(false);
return (
<Navbar expanded={expanded} bg="light" expand="lg">
<Container fluid>
<Navbar.Brand>My Expenses</Navbar.Brand>
<Navbar.Toggle
aria-controls="navbarScroll"
onClick={() => setExpanded(!expanded)}
/>
<Navbar.Collapse id="navbarScroll">
<Nav className="me-auto my-2 my-lg-0" navbarScroll>
<Link
to="/"
className="nav-link"
onClick={() => setExpanded(false)}
>
Home
</Link>
<Link
to="expenses"
className="nav-link"
onClick={() => setExpanded(false)}
>
Expenses
</Link>
<Link
to="invoices"
className="nav-link"
onClick={() => setExpanded(false)}
>
Invoices
</Link>
</Nav>
</Navbar.Collapse>
</Container>
</Navbar>
);
};
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
