diff --git a/src/component/atom.ts b/src/component/atom.ts index dd3003f..ad2078c 100644 --- a/src/component/atom.ts +++ b/src/component/atom.ts @@ -154,7 +154,6 @@ export function atom< const executeQueue = (useArgs: UseArgs) => { dispose("rerun"); queue.forEach((fn) => fn(...useArgs)); - queue.clear(); }; const setValueWithArgs = (value: SetStateAction) => { diff --git a/src/utilities/useShallowEffect.ts b/src/utilities/useShallowEffect.ts index 4cd2309..98ee207 100644 --- a/src/utilities/useShallowEffect.ts +++ b/src/utilities/useShallowEffect.ts @@ -75,11 +75,11 @@ function useShallowCompare(dependencies?: DependencyList): [number] { * * @returns {() => () => void} A function to trigger the debounced effect. */ -const debounce = (effect: EffectCallback, delay: number): (() => void) => { +const debounce = (effect: EffectCallback, delay: number) => { let destructor: ReturnType; let timeout: NodeJS.Timeout; - const later = (): (() => void) => { + const later = () => { if (timeout) clearTimeout(timeout); timeout = setTimeout(() => { @@ -109,5 +109,8 @@ export function useDebouncedShallowEffect( dependencies: DependencyList = [], delay: number ): void { - useEffect(debounce(effect, delay), useShallowCompare(dependencies)); + useEffect( + delay ? debounce(effect, delay) : effect, + useShallowCompare(dependencies) + ); }