From 8b8b1625e8d872ab81bb56e6fc260aaeab96120a Mon Sep 17 00:00:00 2001 From: Gavin Birkhoff Date: Wed, 19 Jul 2023 22:25:36 +0800 Subject: [PATCH] Add hooks --- packages/hooks/src/useMount/index.ts | 9 +++++++++ packages/hooks/src/useUnmount/index.ts | 13 +++++++++++++ packages/hooks/src/useUnmountedRef/index.ts | 14 ++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 packages/hooks/src/useMount/index.ts create mode 100644 packages/hooks/src/useUnmount/index.ts create mode 100644 packages/hooks/src/useUnmountedRef/index.ts 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