mirror of
https://github.com/shishantbiswas/bknd.git
synced 2026-03-16 12:37:20 +00:00
fix entity list unnecessary parameters
This commit is contained in:
32
app/src/ui/hooks/use-effect.ts
Normal file
32
app/src/ui/hooks/use-effect.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import { useEffect, useRef } from "react";
|
||||
|
||||
export function useEffectOnce(effect: () => void | (() => void | undefined), deps: any[]): void {
|
||||
const hasRunRef = useRef(false);
|
||||
const savedDepsRef = useRef<any[] | undefined>(deps);
|
||||
|
||||
useEffect(() => {
|
||||
const depsChanged = !hasRunRef.current || !areDepsEqual(savedDepsRef.current, deps);
|
||||
|
||||
if (depsChanged) {
|
||||
hasRunRef.current = true;
|
||||
savedDepsRef.current = deps;
|
||||
return effect();
|
||||
}
|
||||
}, [deps]);
|
||||
}
|
||||
|
||||
function areDepsEqual(prevDeps: any[] | undefined, nextDeps: any[]): boolean {
|
||||
if (prevDeps && prevDeps.length === 0 && nextDeps.length === 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!prevDeps && nextDeps.length === 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!prevDeps || !nextDeps || prevDeps.length !== nextDeps.length) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return prevDeps.every((dep, index) => Object.is(dep, nextDeps[index]));
|
||||
}
|
||||
Reference in New Issue
Block a user