useBoolean()

A simple abstraction to play with a boolean, don't repeat yourself.

Related hooks:

The Hook

1import { Dispatch, SetStateAction, useCallback, useState } from 'react'
2
3interface UseBooleanOutput {
4 value: boolean
5 setValue: Dispatch<SetStateAction<boolean>>
6 setTrue: () => void
7 setFalse: () => void
8 toggle: () => void
9}
10
11function useBoolean(defaultValue?: boolean): UseBooleanOutput {
12 const [value, setValue] = useState(!!defaultValue)
13
14 const setTrue = useCallback(() => setValue(true), [])
15 const setFalse = useCallback(() => setValue(false), [])
16 const toggle = useCallback(() => setValue(x => !x), [])
17
18 return { value, setValue, setTrue, setFalse, toggle }
19}
20
21export default useBoolean

Usage

1import { useBoolean } from 'usehooks-ts'
2
3export default function Component() {
4 const { value, setValue, setTrue, setFalse, toggle } = useBoolean(false)
5
6 // Just an example to use "setValue"
7 const customToggle = () => setValue((x: boolean) => !x)
8
9 return (
10 <>
11 <p>
12 Value is <code>{value.toString()}</code>
13 </p>
14 <button onClick={setTrue}>set true</button>
15 <button onClick={setFalse}>set false</button>
16 <button onClick={toggle}>toggle</button>
17 <button onClick={customToggle}>custom toggle</button>
18 </>
19 )
20}

Edit on CodeSandbox

See a way to make this page better?
Edit there »