State

useBoolean

Boolean state with setTrue, setFalse, toggle and set.

Demo

value
false

Usage

use-boolean.tsxtsx
import { useBoolean } from "hookli";

export function Demo() {
  const { value, setTrue, setFalse, toggle } = useBoolean(false);

  return (
    <div>
      <p>{value ? "On" : "Off"}</p>
      <button onClick={toggle}>Toggle</button>
      <button onClick={setTrue}>On</button>
      <button onClick={setFalse}>Off</button>
    </div>
  );
}

API

useBoolean.d.tsts
useBoolean(defaultValue?: boolean): { value: boolean; setValue: (value: boolean) => void; setTrue: () => void; setFalse: () => void; toggle: () => void }

Parameters

NameTypeDefaultDescription
defaultValuebooleanfalseThe value the boolean starts from.

Returns

NameTypeDescription
valuebooleanThe current boolean value.
setValue(value: boolean) => voidSets the value directly.
setTrue() => voidSets the value to true.
setFalse() => voidSets the value to false.
toggle() => voidFlips the value.

Hook

The implementation, straight from hookli. Copy it, or install the package.

src/hooks/use-boolean/use-boolean.tstsx
import { useCallback, useState } from "react";

export interface UseBooleanReturn {
  value: boolean;
  setValue: (value: boolean) => void;
  setTrue: () => void;
  setFalse: () => void;
  toggle: () => void;
}

export const useBoolean = (defaultValue = false): UseBooleanReturn => {
  const [value, setValue] = useState(defaultValue);

  const setTrue = useCallback(() => setValue(true), []);
  const setFalse = useCallback(() => setValue(false), []);
  const toggle = useCallback(() => setValue((prev) => !prev), []);

  return { value, setValue, setTrue, setFalse, toggle };
};

View source on GitHub

Related hooks