diff --git a/src/hooks/MountEffects.js b/src/hooks/MountEffects.js new file mode 100644 index 0000000000000000000000000000000000000000..649600eda5bdc05217533c71d665e6a0411c5ac3 --- /dev/null +++ b/src/hooks/MountEffects.js @@ -0,0 +1,22 @@ +import { useEffect, useRef } from "react"; + +function useMountEffect(effect, deps=[], afterMount) { + const didMountRef = useRef(false); + + useEffect(() => { + let cleanup = null; + if (didMountRef.current === afterMount) { + cleanup = effect(); + } + didMountRef.current = true; + return cleanup; + }, deps); +} + +export function useEffectOnMount(effect) { + useMountEffect(effect, [], false); +} + +export function useEffectAfterMount(effect, deps) { + useMountEffect(effect, deps, true); +} \ No newline at end of file