UNPKG

@td-design/react-native-picker

Version:

基于 @td-design/react-native 的 picker 组件

49 lines 1.54 kB
import { useRef } from 'react'; import { Keyboard } from 'react-native'; import { useMemoizedFn, useSafeState } from '@td-design/rn-hooks'; import { transformValueToLabel } from './utils'; function getText(data, value, cascade, placeholder, hyphen) { if (value) { return transformValueToLabel(data, value, cascade, hyphen) || placeholder; } return placeholder; } export default function usePicker(_ref) { let { data, cascade = false, value, onChange, placeholder = '请选择', hyphen } = _ref; const pickerRef = useRef(null); const [state, setState] = useSafeState(value); const currentText = getText(data, state, cascade, placeholder, hyphen); const handlePress = () => { var _pickerRef$current; Keyboard.dismiss(); (_pickerRef$current = pickerRef.current) === null || _pickerRef$current === void 0 ? void 0 : _pickerRef$current.show(); }; const handleChange = value => { setState(value); if (cascade) { onChange === null || onChange === void 0 ? void 0 : onChange(value); } else { onChange === null || onChange === void 0 ? void 0 : onChange(value); } }; const handleInputClear = () => { setState(undefined); onChange === null || onChange === void 0 ? void 0 : onChange(undefined); }; return { state, currentText, pickerRef, handlePress: useMemoizedFn(handlePress), handleChange: useMemoizedFn(handleChange), handleInputClear: useMemoizedFn(handleInputClear) }; } //# sourceMappingURL=usePicker.js.map