Files
supabase/apps/docs/hooks/useHash.ts
T
Charis 1d52dfacde feat: federated docs for linter (#22472)
* feat: federated docs for linter

* style: clean up

* fix: toc and link rewrite

* fix: remove console logs
2024-04-04 13:35:31 -04:00

30 lines
714 B
TypeScript

import { useState, useCallback, useEffect } from 'react'
const useHash = () => {
const [hash, setHash] = useState(() =>
typeof window !== 'undefined' ? window.location.hash.split('#')[1] : undefined
)
const hashChangeHandler = useCallback(() => {
setHash(window.location.hash.split('#')[1])
}, [])
useEffect(() => {
window.addEventListener('hashchange', hashChangeHandler)
return () => {
window.removeEventListener('hashchange', hashChangeHandler)
}
}, [hashChangeHandler])
const updateHash = useCallback(
(newHash) => {
if (newHash !== hash) window.location.hash = newHash
},
[hash]
)
return [hash, updateHash] as const
}
export default useHash