UNPKG

common-hook

Version:
25 lines (24 loc) 918 B
import { useMemo, useState } from "react"; /** * @name 用于在两个状态值间切换Hook * @description 默认为 boolean 切换,基础用法与 useBoolean 一致 * @example * const [state, { toggle, setLeft, setRight }] = useToggle() */ export const useToggle = (defaultValue = false, reverseValue) => { const [state, setState] = useState(defaultValue); const actions = useMemo(() => { const reverseValueOrigin = (reverseValue === undefined ? !defaultValue : reverseValue); const toggle = () => setState((s) => s === defaultValue ? reverseValueOrigin : defaultValue); const set = (value) => setState(value); const setLeft = () => setState(defaultValue); const setRight = () => setState(reverseValueOrigin); return { toggle, set, setLeft, setRight }; }, []); return [state, actions]; };