react-use/src/useToggle.ts
2019-02-02 13:40:04 +01:00

24 lines
508 B
TypeScript

import {useState, useCallback} from 'react';
export type UseToggle = (state: boolean) => [
boolean, // state
(nextValue?: boolean) => void // toggle
];
const useToggle: UseToggle = state => {
const [value, setValue] = useState<boolean>(state);
const toggle = useCallback((nextValue?: boolean) => {
if (typeof nextValue !== 'undefined') {
setValue(!!nextValue);
return;
}
setValue(value => !value)
}, [setValue]);
return [value, toggle];
};
export default useToggle;