Bin
2025-12-17 dcf780a91c16b6be28635b6e2e0e702060ee19f2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { useMemo, useState } from "react";
 
type ToggleHookReturn = [boolean, () => any, () => any, () => any];
 
/**
 * Handle boolean states conveniently
 * @param {boolean=false} defaultValue
 */
export const useToggle = (defaultValue = false): ToggleHookReturn => {
  const [value, setValue] = useState(defaultValue);
  const [setTrue, setFalse, toggleValue] = useMemo(
    () => [setValue.bind(null, true), setValue.bind(null, false), () => setValue((value) => !value)],
    [],
  );
 
  return [value, setTrue, setFalse, toggleValue];
};