diff --git a/packages/hooks/src/useMount/index.ts b/packages/hooks/src/useMount/index.ts new file mode 100644 index 0000000..334c839 --- /dev/null +++ b/packages/hooks/src/useMount/index.ts @@ -0,0 +1,9 @@ +import { useEffect } from 'react' + +const useMount = (fn: () => void) => { + useEffect(() => { + fn?.() + }, []) +} + +export default useMount diff --git a/packages/hooks/src/useUnmount/index.ts b/packages/hooks/src/useUnmount/index.ts new file mode 100644 index 0000000..905e5ce --- /dev/null +++ b/packages/hooks/src/useUnmount/index.ts @@ -0,0 +1,13 @@ +import { useEffect } from 'react' +import useLatest from '../useLatest' +const useUnmount = (fn: () => void) => { + const fnRef = useLatest(fn) + useEffect( + () => () => { + fnRef.current() + }, + [] + ) +} + +export default useUnmount diff --git a/packages/hooks/src/useUnmountedRef/index.ts b/packages/hooks/src/useUnmountedRef/index.ts new file mode 100644 index 0000000..ca7b9fd --- /dev/null +++ b/packages/hooks/src/useUnmountedRef/index.ts @@ -0,0 +1,14 @@ +import { useEffect, useRef } from 'react' + +const useUnmountedRef = () => { + const unmountedRef = useRef(false) + useEffect(() => { + unmountedRef.current = false + return () => { + unmountedRef.current = true + } + }, []) + return unmountedRef +} + +export default useUnmountedRef