import TextField from '@mui/material/TextField'; import { useState, useImperativeHandle, forwardRef } from 'react'; import type { TextFieldProps } from '@mui/material/TextField'; import { useControllableValue } from 'ahooks'; export type refType = { verify: () => boolean } type prop = { checkList: { errMsg: string reg: RegExp }[] } & Omit, 'helperText'> export const CheckInput = forwardRef(({ required, checkList, ...textFied }, ref) => { const [err, setErr] = useState(""); const [value, setValue] = useControllableValue(textFied); const check = (value: string) => { if (required && (!value || value == "")) { setErr("此项必填") return false } for (const v of checkList) { if (!v.reg.test(value)) { setErr(v.errMsg) return false } } setErr("") return true } const verify = () => { return check(value) } useImperativeHandle(ref, () => { return { verify } }) const onChange = (event: React.ChangeEvent) => { const value = event.target.value setValue(value) check(value) } return }) export default CheckInput