diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.js b/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.js index 686b35192702..a972e2f6c99a 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.js +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.js @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import React, {useState} from 'react'; +import React, {useState, useCallback} from 'react'; import classnames from 'classnames'; import Link from '@docusaurus/Link'; @@ -27,6 +27,11 @@ function DocSidebarItem({item, onItemClick, collapsible}) { setCollapsed(item.collapsed); } + const handleItemClick = useCallback(e => { + e.preventDefault(); + setCollapsed(state => !state); + }); + switch (type) { case 'category': return ( @@ -42,9 +47,7 @@ function DocSidebarItem({item, onItemClick, collapsible}) { 'menu__link--active': collapsible && !item.collapsed, })} href="#!" - onClick={ - collapsible ? () => setCollapsed(!collapsed) : undefined - }> + onClick={collapsible ? handleItemClick : undefined}> {label}