0

I have a NavMenu component class like this:

import React, { Component } from "react";
import { Navbar, NavItem, NavLink, OffcanvasBody } from "reactstrap";
import "./styles/NavMenu.css";
import Offcanvas from "react-bootstrap/Offcanvas";

export class NavMenu extends Component {
  static displayName = NavMenu.name;
  constructor(props) {
    super(props);
    this.state = {
      showOffcanvas: false,
    };
    this.setShowOffcanvas = this.setShowOffcanvas.bind(this);
    this.setHideOffcanvas = this.setHideOffcanvas.bind(this);
  }

  setShowOffcanvas() {
    this.setState({ showOffcanvas: true });
  }

  setHideOffcanvas() {
    this.setState({ showOffcanvas: false });
  }
  render() {
    return (
      <>
        <Navbar className="sticky-top">
          <ul className="left-navbar">
            <NavItem>
              <NavLink onClick={this.setShowOffcanvas} className="original">
                Open Offcanvas
              </NavLink>
            </NavItem>
          </ul>
        </Navbar>
        <Offcanvas
          className="offcanvasPlayer"
          show={this.state.showOffcanvas}
          onHide={this.setHideOffcanvas}
        >
          <NavLink
            className="text-white card-link close-btn"
            data-bs-dismiss="offcanvas"
            onClick={this.setHideOffcanvas}
          ></NavLink>
          <OffcanvasBody>{/* offcanvas body here */}</OffcanvasBody>
        </Offcanvas>
      </>
    );
  }
}

then my navbar button to open offcanvas in another component like this :

import React, { Component } from "react";
import { NavLink } from "reactstrap";
import "./styles/TopNavbar.css";

export class TopNavbar extends Component {
  static displayName = TopNavbar.name;
  constructor(props) {
    super(props);
    this.state = {
      showOffcanvas: false,
      showPlayer: false,
    };
    this.setShowOffcanvas = this.setShowOffcanvas.bind(this);
    this.setHideOffcanvas = this.setHideOffcanvas.bind(this);
  }

  setShowOffcanvas() {
    this.setState({ showOffcanvas: true });
  }

  setHideOffcanvas() {
    this.setState({ showOffcanvas: false });
  }

  render() {
    return (
      <>
        <NavLink className="item" onClick={this.setShowOffcanvas}>Opening Offcanvas NavMenu component</NavLink>
      </>
    );
  }
}

but when i'm clicking on the (this.setShowOffcanvas), project show this error:

Uncaught TypeError: Cannot read properties of null (reading 'hide')
    at HTMLAnchorElement.<anonymous> (offcanvas.js:254:1)
    at HTMLDocument.handler (event-handler.js:118:1)

I swear to God, whatever I did didn't work

RubenSmn
  • 4,091
  • 2
  • 5
  • 24

0 Answers0