UNPKG

@td-design/react-native

Version:

react-native UI组件库

36 lines 954 B
import { useEffect } from 'react'; import { Keyboard } from 'react-native'; import { useDerivedValue, useSharedValue, withSpring } from 'react-native-reanimated'; import { useMemoizedFn } from '@td-design/rn-hooks'; const springConfig = { mass: 1, damping: 15, stiffness: 120, overshootClamping: false, restSpeedThreshold: 0.001, restDisplacementThreshold: 0.001 }; export default function useSwitch(_ref) { let { checked, onChange } = _ref; const opened = useSharedValue(false); const progress = useDerivedValue(() => opened.value ? withSpring(1, springConfig) : withSpring(0, springConfig)); useEffect(() => { opened.value = checked ?? false; }, [checked]); const toggle = () => { Keyboard.dismiss(); if (onChange) { onChange(!checked); } else { opened.value = !opened.value; } }; return { progress, toggle: useMemoizedFn(toggle) }; } //# sourceMappingURL=useSwitch.js.map