Skip to content

Commit

Permalink
added a new hook (useEffectExceptFirstRender)
Browse files Browse the repository at this point in the history
  • Loading branch information
0xOmarAdel committed Feb 14, 2024
1 parent 4f38da4 commit 08d15ff
Show file tree
Hide file tree
Showing 8 changed files with 64 additions and 7 deletions.
7 changes: 5 additions & 2 deletions dist/index.d.mts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { RefObject } from 'react';
import { RefObject, DependencyList } from 'react';

type RequestConfig = {
url: string;
Expand All @@ -16,4 +16,7 @@ declare const useFetch: () => {
type ClickOutsideCallback = () => void;
declare const useClickOutside: (callbackFun: ClickOutsideCallback) => RefObject<HTMLElement | null>;

export { type RequestConfig, useClickOutside, useFetch };
type EffectFunction = () => void;
declare const useEffectExceptFirstRender: (func: EffectFunction, deps: DependencyList) => void;

export { useClickOutside, useEffectExceptFirstRender, useFetch };
7 changes: 5 additions & 2 deletions dist/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { RefObject } from 'react';
import { RefObject, DependencyList } from 'react';

type RequestConfig = {
url: string;
Expand All @@ -16,4 +16,7 @@ declare const useFetch: () => {
type ClickOutsideCallback = () => void;
declare const useClickOutside: (callbackFun: ClickOutsideCallback) => RefObject<HTMLElement | null>;

export { type RequestConfig, useClickOutside, useFetch };
type EffectFunction = () => void;
declare const useEffectExceptFirstRender: (func: EffectFunction, deps: DependencyList) => void;

export { useClickOutside, useEffectExceptFirstRender, useFetch };
16 changes: 16 additions & 0 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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
});
15 changes: 15 additions & 0 deletions dist/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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
};
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "hookverse",
"version": "1.1.3",
"version": "1.2.0",
"description": "",
"main": "./dist/index.js",
"module": "./dist/index.mjs",
Expand Down
1 change: 1 addition & 0 deletions src/hooks/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export { default as useFetch } from "./useFetch";
export { default as useClickOutside } from "./useClickOutside";
export { default as useEffectExceptFirstRender } from "./useEffectExceptFirstRender";
20 changes: 20 additions & 0 deletions src/hooks/useEffectExceptFirstRender.tsx
Original file line number Diff line number Diff line change
@@ -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;
3 changes: 1 addition & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
export * from "./hooks";
export * from "./types";
export * from "./hooks";

0 comments on commit 08d15ff

Please sign in to comment.