UNPKG

@td-design/react-native-picker

Version:

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

72 lines 2.33 kB
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } import React, { useImperativeHandle } from 'react'; import { Keyboard } from 'react-native'; import { Modal } from '@td-design/react-native'; import { useMemoizedFn, useSafeState } from '@td-design/rn-hooks'; import Picker from './picker'; 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, ...restProps } = _ref; const [state, setState] = useSafeState(value); const currentText = getText(data, state, cascade, placeholder, hyphen); useImperativeHandle(ref, () => { return { focus: () => { Modal.show( /*#__PURE__*/React.createElement(Picker, _extends({}, restProps, { cascade, value: state, data, onChange: handleChange })), { position: 'bottom' }); } }; }); const handlePress = () => { Keyboard.dismiss(); Modal.show( /*#__PURE__*/React.createElement(Picker, _extends({}, restProps, { cascade, value: state, data, onChange: handleChange })), { position: 'bottom' }); }; 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, handlePress: useMemoizedFn(handlePress), handleChange: useMemoizedFn(handleChange), handleInputClear: useMemoizedFn(handleInputClear) }; } //# sourceMappingURL=usePicker.js.map