useBoolean.ts 644 B

123456789101112131415161718192021
  1. import { Dispatch, SetStateAction, useCallback, useState } from "react";
  2. export interface UseBooleanReturn {
  3. value: boolean;
  4. setValue: Dispatch<SetStateAction<boolean>>;
  5. setTrue: () => void;
  6. setFalse: () => void;
  7. toggle: () => void;
  8. }
  9. function useBoolean(defaultValue?: boolean): UseBooleanReturn {
  10. const [value, setValue] = useState(Boolean(defaultValue));
  11. const setTrue = useCallback(() => setValue(true), []);
  12. const setFalse = useCallback(() => setValue(false), []);
  13. const toggle = useCallback(() => setValue((prev) => !prev), []);
  14. return { value, setValue, setTrue, setFalse, toggle };
  15. }
  16. export default useBoolean;