embedwith/bunapp/useUnstrictEffect.js
2025-05-06 17:12:54 -05:00

29 lines
669 B
JavaScript

import React, { useEffect, useRef } from 'react'
const useUnstrictEffect = function (og_func, og_deps) {
const ref_obj = {}
const ref_teardown = useRef()
useEffect(() => {
const id_timeout = setTimeout(() => {
// do the original thing //
const func_teardown = og_func()
ref_teardown.current = () => {
func_teardown()
return
}
return
}, 1)
return () => {
if (ref_teardown.current) {
ref_teardown.current()
ref_teardown.current = undefined
}
else {
// immediate Unmount = STOP og_func from ever running
clearTimeout(id_timeout)
}
return
}
}, [ ...og_deps ])
return ref_obj
}
export { useUnstrictEffect }