Files
MeBox/web/src/components/useLayoutSidebar.ts
T
truewhile 71bf60c69c 初始化
初始化项目
2026-08-23 22:12:32 +08:00

31 lines
795 B
TypeScript

import { useCallback, useEffect, useState } from 'react'
export function useLayoutSidebar(pathname: string) {
const [isSidebarOpen, setIsSidebarOpen] = useState(true)
const [isMobileDrawerOpen, setIsMobileDrawerOpen] = useState(false)
useEffect(() => {
const handleResize = () => {
setIsSidebarOpen(window.innerWidth >= 1024)
}
handleResize()
window.addEventListener('resize', handleResize)
return () => window.removeEventListener('resize', handleResize)
}, [])
useEffect(() => {
setIsMobileDrawerOpen(false)
}, [pathname])
const toggleSidebar = useCallback(() => {
setIsSidebarOpen((current) => !current)
}, [])
return {
isMobileDrawerOpen,
isSidebarOpen,
setIsMobileDrawerOpen,
setIsSidebarOpen,
toggleSidebar,
}
}