Gatsbyjs - сворачивание навигационной панели с помощью reactstrap

Я работаю над сайтом, созданным с помощью Gatsby.js, и реагирую на компоненты пользовательского интерфейса. Но у меня проблема со свернутой навигационной панелью на экранах меньшего размера.

Мне нужно сворачивать навигацию после каждого щелчка, чтобы она работала с gatsby-link, но сворачивание не сворачивается после загрузки новой страницы.

Поэтому я добавил метод closeNavbar ко всем ссылкам через onClick, но по каким-то причинам это не работает.

Вот мой компонент навигации:

import React from "react";
import Link from "gatsby-link";
import {
  Collapse,
  Container,
  Navbar,
  NavbarToggler,
  Nav,
  NavItem
} from "reactstrap";

export default class Navigation extends React.Component {
  constructor(props) {
    super(props);

    this.toggleNavbar = this.toggleNavbar.bind(this);
    this.closeNavbar = this.closeNavbar.bind(this);
    this.state = {
      collapsed: true
    };
  }

  toggleNavbar() {
    this.setState({
      collapsed: !this.state.collapsed
    });
  }

  closeNavbar() {
    if (this.state.collapsed == true) {
      this.toggleNavbar();
    }
  }

  render() {
    return (
      <header>
        <Navbar className = "navigation__navbar" light expand = "md">
          <Container>
            <NavbarToggler onClick = {this.toggleNavbar} className = "mr-2" />
            <Collapse isOpen = {!this.state.collapsed} navbar>
              <Nav className = "mr-auto" navbar>
                <NavItem>
                  <Link className = "nav-link navigation__navlinks" to = "/">
                    Home
                  </Link>
                </NavItem>
                <NavItem>
                  <Link
                    onClick = {this.closeNavbar}
                    className = "nav-link navigation__navlinks"
                    to = "/leistungen/"
                  >
                    Leistungen
                  </Link>
                </NavItem>
                <NavItem>
                  <Link
                    onClick = {this.closeNavbar}
                    className = "nav-link navigation__navlinks"
                    to = "/kuechen/"
                  >
                    Küchen
                  </Link>
                </NavItem>
              </Nav>
            </Collapse>
          </Container>
        </Navbar>
      </header>
    );
  }
}

У меня такая же проблема, есть проблема на github: github.com/reactstrap/reactstrap/issues/1157

Ludwig Vantours 11.11.2018 20:05
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
1
2 034
1

Ответы 1

У меня была ошибка в методе closeNavbar. Пробовал переключать, только когда он уже был свернут. Это правильный код:

  closeNavbar() {
    if (this.state.collapsed !== true) {
      this.toggleNavbar();
    }
  }

Другие вопросы по теме