diff --git a/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/index.tsx b/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/index.tsx index 2259c9db99..f42acb6a19 100644 --- a/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/index.tsx @@ -14,18 +14,14 @@ import IconClose from '@theme/IconClose'; import styles from './styles.module.css'; function AnnouncementBar(): JSX.Element | null { - const {isClosed, close} = useAnnouncementBar(); + const {isActive, close} = useAnnouncementBar(); const {announcementBar} = useThemeConfig(); - if (!announcementBar) { + if (!isActive) { return null; } - const {content, backgroundColor, textColor, isCloseable} = announcementBar; - - if (!content || (isCloseable && isClosed)) { - return null; - } + const {content, backgroundColor, textColor, isCloseable} = announcementBar!; return (
{ - if (!isClosed) { - setShowAnnouncementBar(scrollY === 0); - } - }); - return showAnnouncementBar; + const {isActive} = useAnnouncementBar(); + const [showAnnouncementBar, setShowAnnouncementBar] = useState(isActive); + + useScrollPosition( + ({scrollY}) => { + if (isActive) { + setShowAnnouncementBar(scrollY === 0); + } + }, + [isActive], + ); + return isActive && showAnnouncementBar; } function HideableSidebarButton({onClick}: {onClick: React.MouseEventHandler}) { @@ -65,7 +69,6 @@ function DocSidebarDesktop({path, sidebar, onCollapse, isHidden}: Props) { navbar: {hideOnScroll}, hideableSidebar, } = useThemeConfig(); - const {isClosed: isAnnouncementBarClosed} = useAnnouncementBar(); return (
}