mirror of
https://github.com/ourongxing/newsnow.git
synced 2025-02-13 00:40:03 +08:00
21 lines
585 B
TypeScript
21 lines
585 B
TypeScript
![]() |
import { useEffect } from "react"
|
||
|
import { useBeforeUnload } from "react-use"
|
||
|
|
||
|
export function useOnReload(fn?: () => Promise<void> | void, fallback?: () => Promise<void> | void) {
|
||
|
useBeforeUnload(() => {
|
||
|
localStorage.setItem("quitTime", Date.now().toString())
|
||
|
return false
|
||
|
})
|
||
|
|
||
|
useEffect(() => {
|
||
|
const _ = localStorage.getItem("quitTime")
|
||
|
const quitTime = _ ? Number(_) : 0
|
||
|
if (!Number.isNaN(quitTime) && Date.now() - quitTime < 1000) {
|
||
|
fn?.()
|
||
|
} else {
|
||
|
fallback?.()
|
||
|
}
|
||
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||
|
}, [])
|
||
|
}
|