Files
headlessui/packages/@headlessui-react/src/hooks/use-on-unmount.ts
T
2023-04-26 14:56:06 +02:00

22 lines
478 B
TypeScript

import { useRef, useEffect } from 'react'
import { microTask } from '../utils/micro-task'
import { useEvent } from './use-event'
export function useOnUnmount(cb: () => void) {
let stableCb = useEvent(cb)
let trulyUnmounted = useRef(false)
useEffect(() => {
trulyUnmounted.current = false
return () => {
trulyUnmounted.current = true
microTask(() => {
if (!trulyUnmounted.current) return
stableCb()
})
}
}, [stableCb])
}