Automatic timed toggle

This commit is contained in:
Daniel Hougaard
2024-08-23 02:25:15 +04:00
parent 121b642d50
commit 9f6a6a7b7c
+10 -1
View File
@@ -8,6 +8,7 @@ type UseToggleReturn = [
on: VoidFn; on: VoidFn;
off: VoidFn; off: VoidFn;
toggle: VoidFn; toggle: VoidFn;
timedToggle: (timeout?: number) => void;
} }
]; ];
@@ -26,5 +27,13 @@ export const useToggle = (initialState = false): UseToggleReturn => {
setValue((prev) => (typeof isOpen === "boolean" ? isOpen : !prev)); setValue((prev) => (typeof isOpen === "boolean" ? isOpen : !prev));
}, []); }, []);
return [value, { on, off, toggle }]; const timedToggle = useCallback((timeout = 2000) => {
setValue((prev) => !prev);
setTimeout(() => {
setValue(false);
}, timeout);
}, []);
return [value, { on, off, toggle, timedToggle }];
}; };