28 lines
519 B
TypeScript
28 lines
519 B
TypeScript
import { useCallback, useState } from "react";
|
|
|
|
export default function useToggle(defaultValue: boolean = false) {
|
|
const [active, setActive] = useState(defaultValue);
|
|
|
|
const toggle = useCallback((callback?: (isOpen: boolean) => void) => {
|
|
setActive((prev) => {
|
|
callback?.(!prev);
|
|
return !prev;
|
|
});
|
|
}, []);
|
|
|
|
const activate = useCallback(() => {
|
|
setActive(true);
|
|
}, []);
|
|
|
|
const deactivate = useCallback(() => {
|
|
setActive(false);
|
|
}, []);
|
|
|
|
return {
|
|
active,
|
|
toggle,
|
|
activate,
|
|
deactivate,
|
|
};
|
|
}
|