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 26 27 28 | import noop from "lodash/noop"; import { Dispatch, useState } from "react"; /** * This is like `useState<boolean>` but provides explicit methods to set the value. This either sets it to * true or the initial state. If the intial state is true then this will always be true. * @returns an array containing the signal value, a setter callback and a reset back to initial value callback */ export const useSignal = ( initial: boolean = false, signalCallback: Dispatch<boolean> = noop, resetCallback: Dispatch<boolean> = noop ): [boolean, () => void, () => void] => { const [signal, setSignal] = useState(initial); return [ signal, () => { signalCallback(signal); setSignal(true); }, () => { resetCallback(signal); setSignal(initial); }, ]; }; |