diff --git a/dist/index.d.mts b/dist/index.d.mts index a026635..46b9fcc 100644 --- a/dist/index.d.mts +++ b/dist/index.d.mts @@ -1,4 +1,4 @@ -import { RefObject } from 'react'; +import { RefObject, DependencyList } from 'react'; type RequestConfig = { url: string; @@ -16,4 +16,7 @@ declare const useFetch: () => { type ClickOutsideCallback = () => void; declare const useClickOutside: (callbackFun: ClickOutsideCallback) => RefObject; -export { type RequestConfig, useClickOutside, useFetch }; +type EffectFunction = () => void; +declare const useEffectExceptFirstRender: (func: EffectFunction, deps: DependencyList) => void; + +export { useClickOutside, useEffectExceptFirstRender, useFetch }; diff --git a/dist/index.d.ts b/dist/index.d.ts index a026635..46b9fcc 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,4 +1,4 @@ -import { RefObject } from 'react'; +import { RefObject, DependencyList } from 'react'; type RequestConfig = { url: string; @@ -16,4 +16,7 @@ declare const useFetch: () => { type ClickOutsideCallback = () => void; declare const useClickOutside: (callbackFun: ClickOutsideCallback) => RefObject; -export { type RequestConfig, useClickOutside, useFetch }; +type EffectFunction = () => void; +declare const useEffectExceptFirstRender: (func: EffectFunction, deps: DependencyList) => void; + +export { useClickOutside, useEffectExceptFirstRender, useFetch }; diff --git a/dist/index.js b/dist/index.js index 92ef6ca..2d92550 100644 --- a/dist/index.js +++ b/dist/index.js @@ -41,6 +41,7 @@ var __async = (__this, __arguments, generator) => { var src_exports = {}; __export(src_exports, { useClickOutside: () => useClickOutside_default, + useEffectExceptFirstRender: () => useEffectExceptFirstRender_default, useFetch: () => useFetch_default }); module.exports = __toCommonJS(src_exports); @@ -100,8 +101,23 @@ var useClickOutside = (callbackFun) => { return elementRef; }; var useClickOutside_default = useClickOutside; + +// src/hooks/useEffectExceptFirstRender.tsx +var import_react3 = require("react"); +var useEffectExceptFirstRender = (func, deps) => { + const didMount = (0, import_react3.useRef)(false); + (0, import_react3.useEffect)(() => { + if (didMount.current) { + func(); + } else { + didMount.current = true; + } + }, [...deps]); +}; +var useEffectExceptFirstRender_default = useEffectExceptFirstRender; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { useClickOutside, + useEffectExceptFirstRender, useFetch }); diff --git a/dist/index.mjs b/dist/index.mjs index 69fa37a..e716e27 100644 --- a/dist/index.mjs +++ b/dist/index.mjs @@ -74,7 +74,22 @@ var useClickOutside = (callbackFun) => { return elementRef; }; var useClickOutside_default = useClickOutside; + +// src/hooks/useEffectExceptFirstRender.tsx +import { useEffect as useEffect2, useRef as useRef2 } from "react"; +var useEffectExceptFirstRender = (func, deps) => { + const didMount = useRef2(false); + useEffect2(() => { + if (didMount.current) { + func(); + } else { + didMount.current = true; + } + }, [...deps]); +}; +var useEffectExceptFirstRender_default = useEffectExceptFirstRender; export { useClickOutside_default as useClickOutside, + useEffectExceptFirstRender_default as useEffectExceptFirstRender, useFetch_default as useFetch }; diff --git a/package.json b/package.json index 9fbfecd..803e8c8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hookverse", - "version": "1.1.3", + "version": "1.2.0", "description": "", "main": "./dist/index.js", "module": "./dist/index.mjs", diff --git a/src/hooks/index.ts b/src/hooks/index.ts index 2c739f0..0193580 100644 --- a/src/hooks/index.ts +++ b/src/hooks/index.ts @@ -1,2 +1,3 @@ export { default as useFetch } from "./useFetch"; export { default as useClickOutside } from "./useClickOutside"; +export { default as useEffectExceptFirstRender } from "./useEffectExceptFirstRender"; diff --git a/src/hooks/useEffectExceptFirstRender.tsx b/src/hooks/useEffectExceptFirstRender.tsx new file mode 100644 index 0000000..07c81eb --- /dev/null +++ b/src/hooks/useEffectExceptFirstRender.tsx @@ -0,0 +1,20 @@ +import { useEffect, useRef, DependencyList } from "react"; + +type EffectFunction = () => void; + +const useEffectExceptFirstRender = ( + func: EffectFunction, + deps: DependencyList +) => { + const didMount = useRef(false); + + useEffect(() => { + if (didMount.current) { + func(); + } else { + didMount.current = true; + } + }, [...deps]); +}; + +export default useEffectExceptFirstRender; diff --git a/src/index.ts b/src/index.ts index d768e02..04f2bbb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,2 +1 @@ -export * from "./hooks"; -export * from "./types"; +export * from "./hooks"; \ No newline at end of file