import { useCallback , useState } from 'react' ; import useLifecycles from './useLifecycles' ; import { off , on } from './misc/util' ; /**
 * read and write url hash, response to url hash change
 */ export const useHash = ( ) => { const [ hash , setHash ] = useState ( ( ) => window . location . hash ) ; const onHashChange = useCallback ( ( ) => { setHash ( window . location . hash ) ; } , [ ] ) ; useLifecycles ( ( ) => { on ( window , 'hashchange' , onHashChange ) ; } , ( ) => { off ( window , 'hashchange' , onHashChange ) ; } ) ; const _setHash = useCallback ( ( newHash ) => { if ( newHash !== hash ) { window . location . hash = newHash ; } } , [ hash ] ) ; return [ hash , _setHash ] as const ; } ;