Files
headlessui/packages/@headlessui-react/src/hooks/use-on-unmount.ts
T
Robin Malfait 76dd10ea55 Sort imports automatically (#2741)
* add `prettier-plugin-organize-imports` and `prettier-plugin-tailwindcss`

* format

* bump Tailwind CSS

* format playgrounds using updated Tailwind CSS and Prettier plugins

* use import syntax
2023-09-11 18:36:30 +02:00

22 lines
478 B
TypeScript

import { useEffect, useRef } 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])
}