@td-design/react-native
Version:
react-native UI组件库
36 lines • 954 B
JavaScript
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