Files
supabase/apps/docs/hooks/useHash.ts
Charis ec86bbc4fe feat: new auth ia (#22812)
Co-authored-by: Kang Ming <kang.ming1996@gmail.com>
Co-authored-by: Joel Lee <lee.yi.jie.joel@gmail.com>
2024-05-07 20:15:06 +00: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