@td-design/react-native-picker
Version:
基于 @td-design/react-native 的 picker 组件
49 lines • 1.54 kB
JavaScript
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