UNPKG

@td-design/react-native

Version:

react-native UI组件库

57 lines (56 loc) 1.46 kB
import { useEffect } from 'react'; import { useMemoizedFn, useSafeState } from '@td-design/rn-hooks'; import Toast from '../toast'; import { formatValue } from './util'; export default function useNumberKeyboard(_ref) { let { type, value, onChange, onCheck, digit = 0, placeholder = '请输入' } = _ref; const [currentText, setCurrentText] = useSafeState(); useEffect(() => { setCurrentText(value ?? placeholder ?? ''); }, [value, placeholder]); /** * 根据type对value进行合法性校验 */ const handleSubmit = async value => { // 对value进行校验,判断是否是数字,支持负数 if (!/^-?\d*\.?\d*$/.test(value)) { Toast.middle({ content: '请输入正确的数字格式' }); return; } try { const text = formatValue(value, type, digit) + ''; await (onCheck === null || onCheck === void 0 ? void 0 : onCheck(text)); if (onChange) { onChange(`${text}`); } else { setCurrentText(text || placeholder); } } catch (error) { Toast.middle({ content: error.message }); } }; const handleInputClear = () => { if (onChange) { onChange(); } else { setCurrentText(placeholder); } }; return { currentText, handleSubmit: useMemoizedFn(handleSubmit), handleInputClear: useMemoizedFn(handleInputClear) }; } //# sourceMappingURL=useNumberKeyboard.js.map