Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 19x 125x 125x 125x 124x 125x | import { useMemo, useState } from "react";
export interface IUseToggleHandlers {
on: () => void;
off: () => void;
toggle: () => void;
reset: () => void;
}
export function useToggle(initialValue = false): [boolean, IUseToggleHandlers] {
const [value, setValue] = useState(initialValue);
const handlers: IUseToggleHandlers = useMemo(
() => ({
on: () => setValue(true),
off: () => setValue(false),
toggle: () => setValue((value) => !value),
reset: () => setValue(initialValue),
}),
[initialValue]
);
return [value, handlers];
}
|