mirror of
https://github.com/streamich/react-use.git
synced 2026-01-25 14:17:16 +00:00
27 lines
670 B
TypeScript
27 lines
670 B
TypeScript
import { useState, useCallback } from "react"
|
|
import useLifecycles from "./useLifecycles"
|
|
|
|
/**
|
|
* 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(() => {
|
|
window.addEventListener('hashchange', onHashChange)
|
|
}, () => {
|
|
window.removeEventListener('hashchange', onHashChange)
|
|
})
|
|
|
|
const _setHash = useCallback((newHash: string) => {
|
|
if (newHash !== hash) {
|
|
window.location.hash = newHash
|
|
}
|
|
}, [hash])
|
|
|
|
return [hash, _setHash] as const
|
|
} |