import { useRouter } from 'next/router' import { useEffect } from 'react' /** * 侧边栏抽屉面板,可以从侧面拉出 * @returns {JSX.Element} * @constructor */ const SideBarDrawer = ({ children, isOpen, onOpen, onClose, className }) => { const router = useRouter() useEffect(() => { const sideBarDrawerRouteListener = () => { switchSideDrawerVisible(false) } router.events.on('routeChangeComplete', sideBarDrawerRouteListener) return () => { router.events.off('routeChangeComplete', sideBarDrawerRouteListener) } }, [router.events]) // 点击按钮更改侧边抽屉状态 const switchSideDrawerVisible = (showStatus) => { if (showStatus) { onOpen && onOpen() } else { onClose && onClose() } const sideBarDrawer = window.document.getElementById('sidebar-drawer') const sideBarDrawerBackground = window.document.getElementById('sidebar-drawer-background') if (showStatus) { sideBarDrawer?.classList.replace('-mr-72', 'mr-0') sideBarDrawerBackground?.classList.replace('hidden', 'block') } else { sideBarDrawer?.classList.replace('mr-0', '-mr-72') sideBarDrawerBackground?.classList.replace('block', 'hidden') } } return