Используйте defaultOpen
вместо open
, если вы изменяете состояние (и вы есть). Если нет, open запрашивает функцию, может быть, попробуйте передать свой обработчик вместо состояния (я не думаю, что это лучшее решение, так как вы обрабатываете события open с помощью onMouseLeave / Enter)
По умолчаниюОткрыто
class Navigation extends React.Component {
constructor(props) {
super(props);
this.state = { isOpen: false };
}
handleOpen = () => {
this.setState({ isOpen: true });
};
handleClose = () => {
this.setState({ isOpen: false });
};
render() {
return (
<div className={s.root} role="navigation">
<Navbar className={s.menuBar}>
<Nav>
<NavDropdown
title="Auction"
id="basic-nav-dropdown"
onMouseEnter={this.handleOpen}
onMouseLeave={this.handleClose}
defaultOpen={this.state.isOpen}
noCaret
>
EDIT
Попробуйте этот хак, чтобы увидеть, работает ли он
class Navigation extends React.Component {
constructor(props) {
super(props);
this.state = { isOpen: false };
}
handleOpen = () => {
this.setState({ isOpen: true });
};
handleClose = () => {
this.setState({ isOpen: false });
};
render() {
return (
<div className={s.root} role="navigation">
<Navbar className={s.menuBar}>
<Nav>
<div
onMouseEnter={this.handleOpen}
onMouseLeave={this.handleClose}
>
<NavDropdown
title="Auction"
id="basic-nav-dropdown"
defaultOpen={this.state.isOpen}
noCaret
>
</div>
Вы можете использовать span вместо div, если хотите