import { useCallback, useEffect, useState } from 'react'
const useHash = () => { const [hash, setHash] = useState<string>('')
const hashChangeHandler = useCallback(() => { setHash(window.location.hash)
}, [])
useEffect(() => { setHash(window.location.hash)
}, [])
useEffect(() => { window.addEventListener('hashchange', hashChangeHandler) return () => { window.removeEventListener('hashchange', hashChangeHandler) }
}, [hashChangeHandler])
const updateHash = useCallback(
(newHash: string) => { if (!newHash) { history.pushState(null, document.title, location.pathname + location.search)
setHash('') } else if (newHash !== hash) { window.location.hash = newHash
}
},
[hash]
)
return [hash, updateHash] satisfies [string, (newHash: string) => void]
}
export default useHash