aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared-react/hooks/use-debounce.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/shared-react/hooks/use-debounce.ts')
-rw-r--r--packages/shared-react/hooks/use-debounce.ts17
1 files changed, 17 insertions, 0 deletions
diff --git a/packages/shared-react/hooks/use-debounce.ts b/packages/shared-react/hooks/use-debounce.ts
new file mode 100644
index 00000000..a973d774
--- /dev/null
+++ b/packages/shared-react/hooks/use-debounce.ts
@@ -0,0 +1,17 @@
+import React from "react";
+
+export function useDebounce<T>(value: T, delayMs: number): T {
+ const [debouncedValue, setDebouncedValue] = React.useState<T>(value);
+
+ React.useEffect(() => {
+ const handler = setTimeout(() => {
+ setDebouncedValue(value);
+ }, delayMs);
+
+ return () => {
+ clearTimeout(handler);
+ };
+ }, [value, delayMs]);
+
+ return debouncedValue;
+}