Search code examples
htmlcssreactjsreactstrap

How to expand Navbar with Reactstrap


i am new to working with Reactstrap. My Navbar Toggler isn't working and my Navbar isn' expanding and I don' know why. I think that i understood the logic behind it but i can't get it to work properly

//imports

import { * } from "reactstrap";
import React from "react";
import "bootstrap/dist/css/bootstrap.css";

// Code

<Navbar color="light" fixed="top" light>
          <NavbarBrand href="/">reactstrap</NavbarBrand>
          <NavbarToggler onClick={function noRefCheck() {}} />
          <Collapse navbar>
            <Nav className="me-auto" navbar>
              <NavItem>
                <NavLink href="/components/">Components</NavLink>
              </NavItem>
              <NavItem>
                <NavLink href="https://github.com/reactstrap/reactstrap">
                  GitHub
                </NavLink>
              </NavItem>
              <UncontrolledDropdown inNavbar nav>
                <DropdownToggle caret nav>
                  Options
                </DropdownToggle>
                <DropdownMenu right>
                  <DropdownItem>Option 1</DropdownItem>
                  <DropdownItem>Option 2</DropdownItem>
                  <DropdownItem divider />
                  <DropdownItem>Reset</DropdownItem>
                </DropdownMenu>
              </UncontrolledDropdown>
            </Nav>
            <NavbarText>Simple Text</NavbarText>
          </Collapse>
        </Navbar>

Solution

  • As you are using Collapse componet so, it need a prop called isOpen and need to update the value passed to isOpen when clicking on the NavbarToggler.

    //Code

    //imports
    import { * } from "reactstrap";
    import React from "react";
    import "bootstrap/dist/css/bootstrap.css";
    
    // Main Code
    const functionName = () => {
    
      const [collapsed, setCollapsed] = useState(true);
      const toggleNavbar = () => setCollapsed(!collapsed);
    
      return(
        <Navbar color="light" fixed="top" light>
              <NavbarBrand href="/">reactstrap</NavbarBrand>
              <NavbarToggler onClick={toggleNavbar} />
              <Collapse navbar isOpen={!collapsed}>
                <Nav className="me-auto" navbar>
                  <NavItem>
                    <NavLink href="/components/">Components</NavLink>
                  </NavItem>
                  <NavItem>
                    <NavLink href="https://github.com/reactstrap/reactstrap">
                      GitHub
                    </NavLink>
                  </NavItem>
                  <UncontrolledDropdown inNavbar nav>
                    <DropdownToggle caret nav>
                      Options
                    </DropdownToggle>
                    <DropdownMenu right>
                      <DropdownItem>Option 1</DropdownItem>
                      <DropdownItem>Option 2</DropdownItem>
                      <DropdownItem divider />
                      <DropdownItem>Reset</DropdownItem>
                    </DropdownMenu>
                  </UncontrolledDropdown>
                </Nav>
                <NavbarText>Simple Text</NavbarText>
              </Collapse>
            </Navbar>
        );
    }
    

    Use expand={"lg"} in Navbar tag so that if its bigger screen then it will expand fully and for smaller screen it be collapse.