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 166x 166x 166x 165x 166x | 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]; } |