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 (
}