Я работаю над сайтом, созданным с помощью 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>
);
}
}





У меня была ошибка в методе closeNavbar. Пробовал переключать, только когда он уже был свернут. Это правильный код:
closeNavbar() {
if (this.state.collapsed !== true) {
this.toggleNavbar();
}
}
У меня такая же проблема, есть проблема на github: github.com/reactstrap/reactstrap/issues/1157