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];
| };
|
|