mirror of
https://github.com/truewhile/MeBox.git
synced 2026-09-30 11:46:36 +08:00
71bf60c69c
初始化项目
31 lines
795 B
TypeScript
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,
|
|
}
|
|
} |